StackExchange.Redis pour C# (.NET) : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

StackExchange.Redis pour C# (.NET) : guide complet avec exemples

1. Qu'est-ce que StackExchange.Redis et pourquoi l'utiliser ?

StackExchange.Redis est un client Redis hautes performances et asynchrone, développé par l'équipe de StackOverflow. C'est la bibliothèque de référence pour interagir avec Redis dans l'écosystème .NET. Elle est compatible avec .NET Framework 4.6+ et .NET Core/.NET 5+.

Pourquoi l'utiliser ? Redis est un magasin de données en mémoire (in-memory) utilisé comme cache, courtier de messages (Pub/Sub), file d'attente de tâches ou base de données NoSQL haute performance. StackExchange.Redis offre une API pratique pour tous ces cas d'usage : gestion des chaînes, hachages, listes, ensembles, transactions, scripts Lua, flux de données, etc. Sans cette bibliothèque, vous devriez écrire du code bas niveau pour gérer les sockets et le protocole Redis (RESP).

La principale force de cette bibliothèque réside dans son asynchronisme et son multithreading. Elle utilise ConnectionMultiplexer, un objet unique et partagé pour toutes les connexions au serveur Redis. Cela permet d'utiliser efficacement les sockets et d'éviter de créer de multiples connexions. La bibliothèque prend entièrement en charge Redis Cluster, Sentinel et la réplication.

2. Installation

L'installation se fait via le gestionnaire de packages NuGet. Exécutez l'une des commandes suivantes dans la console du gestionnaire de packages (Package Manager Console) ou dans le terminal .NET CLI :

// Via .NET CLI
dotnet add package StackExchange.Redis

// Via Package Manager Console
Install-Package StackExchange.Redis

Après l'installation, ajoutez la directive using dans votre code :

using StackExchange.Redis;

3. Démarrage rapide — exemple minimal fonctionnel

Voici un exemple minimal qui se connecte à un serveur Redis local, écrit une chaîne et la lit :

using StackExchange.Redis;

// Création du multiplexeur (point d'entrée pour toutes les opérations)
// Remplacez "localhost:6379" par l'adresse de votre serveur Redis
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");

// Obtention de la base de données (par défaut db 0)
IDatabase db = redis.GetDatabase();

// Écriture d'une valeur
bool setResult = db.StringSet("mykey", "Bonjour, Redis !");
Console.WriteLine($"Résultat de l'écriture : {setResult}");

// Lecture de la valeur
RedisValue value = db.StringGet("mykey");
Console.WriteLine($"Résultat de la lecture : {value}");

// Fermeture de la connexion (généralement pas nécessaire si vous utilisez using)
redis.Close();

Important : ConnectionMultiplexer est un objet à longue durée de vie. Il doit être créé une seule fois pour toute la durée de vie de l'application (par exemple, en tant que singleton dans un conteneur DI). Ne créez pas un nouveau multiplexeur pour chaque requête !

4. Méthodes / fonctions / classes principales

4.1. ConnectionMultiplexer.Connect()

Signature : public static ConnectionMultiplexer Connect(string configuration)

Fonction : Crée et retourne une nouvelle instance de ConnectionMultiplexer qui gère toutes les connexions à Redis. Accepte une chaîne de configuration (adresse, port, mot de passe, délais d'attente, etc.).

Exemple :

var redis = ConnectionMultiplexer.Connect("monserveurredis.com:6379,password=secret,connectTimeout=5000");

4.2. IDatabase.StringSet()

Signature : bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry = null, When when = When.Always)

Fonction : Définit la valeur d'une clé spécifiée. Peut accepter une durée de vie optionnelle (expiry) et une condition d'écriture (uniquement si la clé existe, n'existe pas, etc.).

Exemple :

IDatabase db = redis.GetDatabase();
db.S                    

Recommendations