Client Redis pour C# (.NET) : StackExchange.Redis
Dans le développement moderne sur la plateforme .NET, il est souvent nécessaire de mettre en cache rapidement des données, d'organiser des files d'attente de messages ou de gérer des sessions. L'une des meilleures solutions pour ces tâches est l'utilisation de Redis — un magasin de données clé-valeur haute performance. Pour interagir avec Redis depuis C# (.NET), la bibliothèque la plus populaire et fiable est StackExchange.Redis.
Qu'est-ce que StackExchange.Redis ?
StackExchange.Redis est une bibliothèque cliente open source développée par Stack Overflow. Elle offre un ensemble complet de fonctionnalités pour travailler avec Redis : des opérations simples GET/SET aux scénarios complexes avec publication/abonnement (Pub/Sub), transactions et scripts Lua. La bibliothèque est optimisée pour les applications multithread et prend en charge les opérations asynchrones, ce qui en fait un choix idéal pour les services à forte charge en C#.
Installation
Vous pouvez installer la bibliothèque via le gestionnaire de packages NuGet. Exécutez la commande dans la console du gestionnaire de packages :
Install-Package StackExchange.RedisOu via .NET CLI :
dotnet add package StackExchange.RedisAprès l'installation, vous pouvez vous connecter au serveur Redis en utilisant la chaîne de connexion :
using StackExchange.Redis;
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");IDatabase db = redis.GetDatabase();Fonctionnalités principales et exemples de code
1. Opérations de base avec les clés
Le scénario le plus courant est la sauvegarde et la récupération de valeurs. Exemple de travail avec des chaînes :
// Écriture de donnéesdb.StringSet("user:1:name", "Alexeï");db.StringSet("user:1:email", "alex@example.com");
// Lecture de donnéesstring name = db.StringGet("user:1:name");string email = db.StringGet("user:1:email");
Console.WriteLine($"Nom : {name}, Email : {email}");2. Travail avec les hachages
Redis prend en charge la structure de données "hachage", pratique pour stocker des objets :
// Écriture d'un hachageHashEntry[] user = new HashEntry[]{ new HashEntry("name", "Maria"), new HashEntry("age", 28), new HashEntry("city", "Moscou")};db.HashSet("user:2", user);
// Lecture de tous les champsHashEntry[] loadedUser = db.HashGetAll("user:2");foreach (var entry in loadedUser){ Console.WriteLine($"{entry.Name}: {entry.Value}");}3. Mise en cache avec durée de vie
L'une des fonctions clés de Redis est la suppression automatique des données obsolètes. Définissez un TTL (Time To Live) pour une clé :
// Mise en cache des données pendant 10 minutesdb.StringSet("cache:weather", "ensoleillé, +22°C", TimeSpan.FromMinutes(10));
// Vérification de la durée de vieTimeSpan? ttl = db.KeyTimeToLive("cache:weather");Console.WriteLine($"Restant : {ttl?.TotalSeconds} secondes");4. Publication et abonnement (Pub/Sub)
Implémentez l'échange de messages en temps réel. Exemple d'abonné :
// Création d'un abonnéISubscriber subscriber = redis.GetSubscriber();subscriber.Subscribe("notifications", (channel, message) =>{ Console.WriteLine($"Notification reçue : {message}");});
// Publication d'un messagesubscriber.Publish("notifications", "Bonjour le monde !");5. Transactions
Exécution atomique de plusieurs opérations :
ITransaction transaction = db.CreateTransaction();transaction.AddCondition(Condition.KeyNotExists("counter:lock"));transaction.StringSetAsync("counter:lock", "1");transaction.StringIncrementAsync("counter:value");
// Validation de la transactionbool committed = transaction.Execute();Console.WriteLine(committed ? "Transaction exécutée" : "Échec");Avantages de StackExchange.Redis
- Haute performance
Aussi dans la bibliothèque
Guide complet Swagger-PHP pour PHP : tutoriel et exemples
Files d'attente de tâches en Go (Golang) : meilleures bibliothèques et outils
Travailler avec CSV en Java : bibliothèques OpenCSV et Apache Commons CSV
gRPC pour C++ : bibliothèques, configuration et exemples de code