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.RedisOder über die .NET CLI:
dotnet add package StackExchange.RedisNach 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
Auch in der Bibliothek
Mikro-ORM für TypeScript: Komplettes Tutorial mit Beispielen
ORM für Java: Vergleich von Hibernate, MyBatis, JPA und Spring Data
Objektserialisierung in TypeScript: Bibliotheken, Methoden und Beispiele
Flipper für Kotlin: Komplettguide mit Beispielen
Arbeit mit YAML in TypeScript: Parsen, Generieren und Validieren von Daten