StackExchange.Redis für C# (.NET): Komplettguide mit Beispielen

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

StackExchange.Redis für C# (.NET): Komplettguide mit Beispielen

1. Was ist StackExchange.Redis und wozu braucht man es?

StackExchange.Redis ist ein leistungsstarker, asynchroner Redis-Client, der vom StackOverflow-Team entwickelt wurde. Es ist die De-facto-Standardbibliothek für die Arbeit mit Redis im .NET-Ökosystem. Sie ist kompatibel mit .NET Framework 4.6+ sowie .NET Core/.NET 5+.

Wozu wird sie benötigt? Redis ist ein In-Memory-Datenspeicher, der häufig als Cache, Message Broker (Pub/Sub), Task-Warteschlange oder als hochperformante NoSQL-Datenbank eingesetzt wird. StackExchange.Redis bietet eine benutzerfreundliche API für all diese Szenarien: Verwaltung von Strings, Hashes, Listen, Sets, Transaktionen, Lua-Skripten, Datenstreaming und mehr. Ohne diese Bibliothek müssten Sie Low-Level-Code für die Arbeit mit Sockets und dem Redis-Protokoll (RESP) schreiben.

Die Hauptstärke der Bibliothek liegt in ihrer Asynchronität und Multithreading-Fähigkeit. Sie verwendet den ConnectionMultiplexer – ein zentrales, gemeinsam genutztes Objekt für alle Verbindungen zum Redis-Server. Dadurch werden Sockets effizient genutzt und die Erstellung vieler Einzelverbindungen vermieden. Die Bibliothek unterstützt vollständig Redis Cluster, Sentinel und Replikation.

2. Installation

Die Installation erfolgt über den NuGet Package Manager. Führen Sie einen der folgenden Befehle in der Package Manager Console oder im .NET CLI-Terminal aus:

// Über .NET CLI
dotnet add package StackExchange.Redis

// Über Package Manager Console
Install-Package StackExchange.Redis

Fügen Sie nach der Installation die using-Direktive in Ihren Code ein:

using StackExchange.Redis;

3. Schnellstart – Minimales Arbeitsbeispiel

Hier ist ein minimales Beispiel, das eine Verbindung zu einem lokalen Redis-Server herstellt, einen String speichert und wieder ausliest:

using StackExchange.Redis;

// Multiplexer erstellen (Einstiegspunkt für alle Operationen)
// Ersetzen Sie "localhost:6379" durch Ihre Redis-Serveradresse
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");

// Datenbank abrufen (standardmäßig db 0)
IDatabase db = redis.GetDatabase();

// Wert speichern
bool setResult = db.StringSet("mykey", "Hallo, Redis!");
Console.WriteLine($"Set-Ergebnis: {setResult}");

// Wert auslesen
RedisValue value = db.StringGet("mykey");
Console.WriteLine($"Get-Ergebnis: {value}");

// Verbindung schließen (normalerweise nicht nötig bei Verwendung von using)
redis.Close();

Wichtig: Der ConnectionMultiplexer ist ein langlebiges Objekt. Es sollte einmalig für die gesamte Lebensdauer der Anwendung erstellt werden (z. B. als Singleton im DI-Container). Erstellen Sie keinen neuen Multiplexer für jede Anfrage!

4. Wichtige Methoden/Funktionen/Klassen

4.1. ConnectionMultiplexer.Connect()

Signatur: public static ConnectionMultiplexer Connect(string configuration)

Funktion: Erstellt und gibt eine neue Instanz von ConnectionMultiplexer zurück, die alle Verbindungen zu Redis verwaltet. Akzeptiert einen Konfigurationsstring (Adresse, Port, Passwort, Timeouts usw.).

Beispiel:

var redis = ConnectionMultiplexer.Connect("myredisserver.com:6379,password=geheim,connectTimeout=5000");

4.2. IDatabase.StringSet()

Signatur: bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry = null, When when = When.Always)

Funktion: Setzt den Wert für einen bestimmten Schlüssel. Kann optional eine Gültigkeitsdauer (expiry) und eine Bedingung für das Setzen (nur wenn Schlüssel existiert, nicht existiert usw.) annehmen.

Beispiel:

IDatabase db = redis.GetDatabase();
db.S                    

Empfehlungen