Client Redis pour C# (.NET) : StackExchange.Redis — connexion et 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

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

\n\n

Dans le développement moderne sur la plateforme .NET, il est souvent nécessaire d'utiliser des systèmes de cache haute performance et des courtiers de messages. L'une des solutions les plus populaires est Redis — un stockage de données en mémoire fonctionnant sur le principe « clé-valeur ». Pour interagir avec Redis depuis C# (.NET), il existe une bibliothèque éprouvée et puissante appelée StackExchange.Redis. Elle a été développée par la société Stack Exchange (créateurs de Stack Overflow) et prend en charge toutes les fonctionnalités principales de Redis, y compris le clustering, la réplication et Pub/Sub.

\n\n

Qu'est-ce que StackExchange.Redis ?

\n\n

StackExchange.Redis est un client Redis haute performance et asynchrone, écrit en C#. La bibliothèque est optimisée pour gérer un grand nombre de connexions simultanées et prend en charge le multiplexage — une seule connexion peut servir plusieurs requêtes parallèles sans blocage. Cela en fait un choix idéal pour les applications à forte charge sur .NET Core, .NET 5/6/7/8 et .NET Framework.

\n\n

Installation de la bibliothèque

\n\n

L'installation de StackExchange.Redis se fait via le NuGet Package Manager. La méthode la plus simple consiste à utiliser la console du gestionnaire de paquets dans Visual Studio ou l'interface en ligne de commande dotnet.

\n\n
dotnet add package StackExchange.Redis
\n\n

Ou via NuGet :

\n\n
Install-Package StackExchange.Redis
\n\n

Après une installation réussie, une référence à l'assembly apparaît dans le projet et vous pouvez commencer à travailler avec Redis.

\n\n

Connexion au serveur Redis

\n\n

La classe principale pour l'interaction est ConnectionMultiplexer. Elle gère les connexions à Redis et traite automatiquement les reconnexions, les erreurs réseau et le basculement vers les réplicas.

\n\n

Exemple de création d'une connexion :

\n\n
using StackExchange.Redis;\n\nclass Program\n{\n    static async Task Main(string[] args)\n    {\n        // Chaîne de connexion au Redis local\n        string connectionString = "localhost:6379";\n        \n        // Création du multiplexeur\n        using var redis = await ConnectionMultiplexer.ConnectAsync(connectionString);\n        \n        // Obtention de la base de données (par défaut db=0)\n        IDatabase db = redis.GetDatabase();\n        \n        // Vérification de la connexion\n        bool isConnected = db.Ping().TotalSeconds < 2;\n        Console.WriteLine($"Connecté : {isConnected}");\n    }\n}
\n\n

La chaîne de connexion peut contenir un mot de passe, un port, des paramètres SSL et d'autres options. Par exemple, pour se connecter à un Redis sur un serveur distant avec mot de passe :

\n\n
"myredis.cloud.com:6380,password=secret123,ssl=true"
\n\n

Opérations de base avec les données

\n\n

Après avoir obtenu une instance de IDatabase, vous pouvez effectuer toutes les opérations Redis standard.

\n\n

Travail avec les chaînes

\n\n
// Écriture d'une chaîne\nawait db.StringSetAsync("user:1:name", "Alexeï");\n\n// Lecture d'une chaîne\nstring name = await db.StringGetAsync("user:1:name");\nConsole.WriteLine(name); // Affiche : Alexeï\n\n// Incrémentation d'un compteur\nawait db.StringIncrementAsync("page:visits", 1);
\n\n

Travail avec les hachages

\n\n
// Définition des champs d'un hachage\nHashEntry[] userData = {\n    new HashEntry("name", "Maria"),\n    new HashEntry("age", 28),\n    new HashEntry("city", "Moscou")\n};\nawait db.HashSetAsync("user:2", userData);\n\n// Obtention d'un seul champ\nstring city = await db.HashGetAsync("user:2", "city");\nConsole.WriteLine(city); // Moscou\n\n// Obtenir tous les champs du hachage\nvar allFields = await db.HashGetAllAsync("user:2");\nforeach (var field in allFields)\n{\n    Console.WriteLine($"{field.Name}: {field.Value}");\n}
\n\n

Travail avec les listes

\n\n
// Ajout d'éléments à la liste (à gauche)\nawait db.ListLeftPushAsync("notifications", "Première notification");\nawait db.ListLeftPushAsync("notifications", "Deuxième notification");\n\n// Obtention de tous les éléments de la liste\nvar                    

Recommendations