cmoi936.RedisRepository 1.0.0

dotnet add package cmoi936.RedisRepository --version 1.0.0
                    
NuGet\Install-Package cmoi936.RedisRepository -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="cmoi936.RedisRepository" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="cmoi936.RedisRepository" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="cmoi936.RedisRepository" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add cmoi936.RedisRepository --version 1.0.0
                    
#r "nuget: cmoi936.RedisRepository, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package cmoi936.RedisRepository@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=cmoi936.RedisRepository&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=cmoi936.RedisRepository&version=1.0.0
                    
Install as a Cake Tool

RedisRepository

NuGet License: MIT

Implémentation générique d'un repository Redis pour .NET, permettant la gestion de données de tout type avec support de sérialisation JSON, expiration et opérations CRUD optimisées.

🚀 Fonctionnalités

  • Repository générique : Fonctionne avec n'importe quel type de classe
  • Sérialisation JSON : Sérialisation/désérialisation automatique
  • Gestion d'expiration : Support TTL (Time To Live) configurable
  • Opérations CRUD complètes : Set, Get, Delete, Exists
  • Logging intégré : Support de Microsoft.Extensions.Logging
  • Gestion d'erreurs : Récupération automatique des données corrompues
  • Performance optimisée : Utilisation de StackExchange.Redis

📦 Installation

dotnet add package RedisRepository

🔧 Configuration

Enregistrement dans le conteneur DI

using Microsoft.Extensions.DependencyInjection;
using StackExchange.Redis;
using RedisRepository.Repositories;

services.AddSingleton<IConnectionMultiplexer>(sp =>
{
    return ConnectionMultiplexer.Connect("localhost:6379");
});

services.AddSingleton(sp =>
{
    var redis = sp.GetRequiredService<IConnectionMultiplexer>();
    return redis.GetDatabase();
});

services.AddScoped<IGenericRedisRepository<MyModel>, GenericRedisRepository<MyModel>>();

💡 Utilisation

Exemple basique

public class MyModel
{
    public string Id { get; set; }
    public string Name { get; set; }
    public int Value { get; set; }
}

// Injection du repository
public class MyService
{
    private readonly IGenericRedisRepository<MyModel> _repository;

    public MyService(IGenericRedisRepository<MyModel> repository)
    {
        _repository = repository;
    }

    public async Task Example()
    {
        var model = new MyModel 
        { 
            Id = "123", 
            Name = "Test", 
            Value = 42 
        };

        // Sauvegarder avec expiration de 1 heure
        await _repository.SetAsync("key1", model, TimeSpan.FromHours(1));

        // Récupérer les données
        var retrieved = await _repository.GetAsync("key1");

        // Vérifier l'existence
        bool exists = await _repository.ExistsAsync("key1");

        // Obtenir le TTL
        TimeSpan? ttl = await _repository.TimeToLiveAsync("key1");

        // Modifier l'expiration
        await _repository.ExpireAsync("key1", TimeSpan.FromMinutes(30));

        // Supprimer
        await _repository.DeleteAsync("key1");
    }
}

Préfixe de clé personnalisé

var repository = new GenericRedisRepository<MyModel>(
    database, 
    logger, 
    keyPrefix: "myapp:models:"
);

🛠️ API

Méthodes disponibles

Méthode Description
SetAsync(key, data, expiration?, ct) Sauvegarde des données avec expiration optionnelle
GetAsync(key, ct) Récupère les données pour une clé
ExistsAsync(key, ct) Vérifie l'existence d'une clé
DeleteAsync(key, ct) Supprime une clé
ExpireAsync(key, expiration, ct) Modifie l'expiration d'une clé
TimeToLiveAsync(key, ct) Récupère le TTL d'une clé

📋 Prérequis

  • .NET 8.0 ou supérieur
  • Redis 5.0 ou supérieur
  • StackExchange.Redis 2.10.1 ou supérieur

🤝 Contribution

Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.

📄 Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

🔗 Liens utiles

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 176 12/26/2025