Redis-Client (go-redis) für Go: Vollständige Anleitung 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

Einführung in go-redis: Leistungsstarker Redis-Client für Go

\n\n

Redis ist ein leistungsstarker In-Memory-Datenspeicher vom Typ "Schlüssel-Wert". Es wird für Caching, Sitzungsverwaltung, Nachrichtenwarteschlangen, Ranglisten und vieles mehr verwendet. Für die Interaktion mit Redis aus Go heraus gibt es mehrere Bibliotheken, und go-redis (Paket github.com/redis/go-redis/v9) ist die beliebteste, aktiv gewartete und funktionsreichste.

\n\n

Diese Bibliothek bietet eine saubere, idiomatische Go-API für die Arbeit mit allen Redis-Datenstrukturen (Strings, Listen, Mengen, Hashes, sortierte Mengen, HyperLogLog, Streams, Geodaten) und unterstützt erweiterte Funktionen wie Clustering, Sentinel, Pub/Sub, Pipelining und Lua-Skripte. go-redis unterstützt vollständig Redis 7 und 8.

\n\n

In dieser Anleitung werden wir die Installation, die wichtigsten Methoden, typische Fehler im Detail besprechen und ein praktisches Beispiel aus der realen Welt schreiben.

\n\n

Installation von go-redis

\n\n

Die Installation erfolgt mit dem Standardbefehl go get:

\n\n
go get github.com/redis/go-redis/v9
\n\n

Nach der Ausführung dieses Befehls erscheint die Abhängigkeit in Ihrer go.mod-Datei. Stellen Sie sicher, dass Sie Go Version 1.18 oder höher installiert haben.

\n\n

Sie benötigen außerdem einen laufenden Redis-Server (lokal oder remote). Für Tests können Sie Redis in Docker starten:

\n\n
docker run --name my-redis -p 6379:6379 -d redis
\n\n

Schnellstart: Verbinden und erste Anfrage stellen

\n\n

Erstellen Sie eine Datei main.go und schreiben Sie ein einfaches Programm, das eine Verbindung zu Redis herstellt, einen Wert schreibt und liest.

\n\n
package main\n\nimport (\n    "context"\n    "fmt"\n    "github.com/redis/go-redis/v9"\n)\n\nfunc main() {\n    // Kontext erstellen (context.Background() wird empfohlen)\n    ctx := context.Background()\n\n    // Client erstellen\n    rdb := redis.NewClient(&redis.Options{\n        Addr:     "localhost:6379", // Adresse des Redis-Servers\n        Password: "",               // Passwort (falls vorhanden)\n        DB:       0,                // Datenbanknummer (Standard 0)\n    })\n\n    // Verbindung mit Ping prüfen\n    pong, err := rdb.Ping(ctx).Result()\n    if err != nil {\n        panic(fmt.Sprintf("Verbindung zu Redis fehlgeschlagen: %v", err))\n    }\n    fmt.Println("Verbunden:", pong)\n\n    // Schlüssel "name" mit Wert "Alice" setzen\n    err = rdb.Set(ctx, "name", "Alice", 0).Err()\n    if err != nil {\n        panic(err)\n    }\n\n    // Wert für Schlüssel "name" lesen\n    val, err := rdb.Get(ctx, "name").Result()\n    if err != nil {\n        panic(err)\n    }\n    fmt.Println("name:", val)\n\n    // Verbindung beim Beenden des Programms schließen\n    defer rdb.Close()\n}
\n\n

Führen Sie das Programm aus:

\n\n
go run main.go
\n\n

Sie sollten Folgendes sehen:

\n\n
Verbunden: PONG\nname: Alice
\n\n

Wichtige Methoden von go-redis (8+ Stück)

\n\n

Alle Methoden von go-redis geben ein Objekt *Cmd (oder eine spezialisierte Version davon) zurück, das die Methode .Result() zum Abrufen von Ergebnis und Fehler, .Val() zum Abrufen nur des Werts und .Err() zum Abrufen nur des Fehlers hat. Dies ermöglicht eine flexible Ergebnisverarbeitung.

\n\n

1. Set — Wert eines Schlüssels setzen

\n

Was es tut: Setzt den Wert für den angegebenen Schlüssel. Sie können eine Lebensdauer (TTL) oder 0 für unbegrenzte Speicherung angeben.

\n

Parameter:

\n
    \n
  • ctx context.Context — Kontext zur Steuerung der Ausführungszeit
  • \n
  • key string — Name des Schlüssels
  • \n
  • value interface{} — Wert (wird serialisiert)
  • \n
  • expiration time.Duration — Lebensdauer (0 bedeutet kein TTL)
  • \n
\n

Beispiel:

\n
err := rdb.Set(ctx, "                    

Empfehlungen