Client Redis pour C# (.NET) : StackExchange.Redis

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

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.Redis


Ou via .NET CLI :



dotnet add package StackExchange.Redis


Aprè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

Recommendations