Redis-Client für C# (.NET): StackExchange.Redis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Redis-Client für C# (.NET): StackExchange.Redis



In der modernen Entwicklung auf der .NET-Plattform besteht häufig die Notwendigkeit für schnelles Daten-Caching, die Organisation von Nachrichtenwarteschlangen oder die Verwaltung von Sitzungen. Eine der besten Lösungen für diese Aufgaben ist die Verwendung von Redis – einem leistungsstarken Schlüssel-Wert-Datenspeicher. Für die Interaktion mit Redis aus C# (.NET) ist die beliebteste und zuverlässigste Bibliothek StackExchange.Redis.



Was ist StackExchange.Redis?



StackExchange.Redis ist eine quelloffene Client-Bibliothek, die von Stack Overflow entwickelt wurde. Sie bietet einen vollständigen Funktionsumfang für die Arbeit mit Redis: von einfachen GET/SET-Operationen bis hin zu komplexen Szenarien mit Veröffentlichen/Abonnieren (Pub/Sub), Transaktionen und Lua-Skripten. Die Bibliothek ist für Multithread-Anwendungen optimiert und unterstützt asynchrone Operationen, was sie zur idealen Wahl für hochbelastete Dienste in C# macht.



Installation



Die Bibliothek kann über den NuGet-Paketmanager installiert werden. Führen Sie den folgenden Befehl in der Paketmanager-Konsole aus:



Install-Package StackExchange.Redis


Oder über die .NET CLI:



dotnet add package StackExchange.Redis


Nach der Installation können Sie eine Verbindung zum Redis-Server herstellen, indem Sie die Verbindungszeichenfolge verwenden:



using StackExchange.Redis;

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");IDatabase db = redis.GetDatabase();


Hauptfunktionen und Codebeispiele



1. Grundlegende Schlüsseloperationen



Das häufigste Szenario ist das Speichern und Abrufen von Werten. Beispiel für die Arbeit mit Strings:



// Daten schreibendb.StringSet("user:1:name", "Alexei");db.StringSet("user:1:email", "alex@example.com");

// Daten lesenstring name = db.StringGet("user:1:name");string email = db.StringGet("user:1:email");

Console.WriteLine($"Name: {name}, E-Mail: {email}");


2. Arbeiten mit Hashes



Redis unterstützt die Datenstruktur "Hash", was sich gut zum Speichern von Objekten eignet:



// Hash schreibenHashEntry[] user = new HashEntry[]{    new HashEntry("name", "Maria"),    new HashEntry("age", 28),    new HashEntry("city", "Moskau")};db.HashSet("user:2", user);

// Alle Felder lesenHashEntry[] loadedUser = db.HashGetAll("user:2");foreach (var entry in loadedUser){ Console.WriteLine($"{entry.Name}: {entry.Value}");}


3. Caching mit Lebensdauer



Eine der Schlüsselfunktionen von Redis ist die automatische Löschung veralteter Daten. Legen Sie eine TTL (Time To Live) für den Schlüssel fest:



// Daten für 10 Minuten cachendb.StringSet("cache:weather", "sonnig, +22°C", TimeSpan.FromMinutes(10));

// Lebensdauer prüfenTimeSpan? ttl = db.KeyTimeToLive("cache:weather");Console.WriteLine($"Verbleibend: {ttl?.TotalSeconds} Sekunden");


4. Veröffentlichen und Abonnieren (Pub/Sub)



Implementieren Sie Echtzeit-Nachrichtenaustausch. Beispiel eines Abonnenten:



// Abonnenten erstellenISubscriber subscriber = redis.GetSubscriber();subscriber.Subscribe("notifications", (channel, message) =>{    Console.WriteLine($"Benachrichtigung erhalten: {message}");});

// Nachricht veröffentlichensubscriber.Publish("notifications", "Hallo Welt!");


5. Transaktionen



Atomare Ausführung mehrerer Operationen:



ITransaction transaction = db.CreateTransaction();transaction.AddCondition(Condition.KeyNotExists("counter:lock"));transaction.StringSetAsync("counter:lock", "1");transaction.StringIncrementAsync("counter:value");

// Transaktion festschreibenbool committed = transaction.Execute();Console.WriteLine(committed ? "Transaktion ausgeführt" : "Abgelehnt");


Vorteile von StackExchange.Redis



  • Hohe Leistung

Empfehlungen