Einführung in go-redis: Leistungsstarker Redis-Client für Go
\n\nRedis 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.
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\nIn dieser Anleitung werden wir die Installation, die wichtigsten Methoden, typische Fehler im Detail besprechen und ein praktisches Beispiel aus der realen Welt schreiben.
\n\nInstallation von go-redis
\n\nDie Installation erfolgt mit dem Standardbefehl go get:
go get github.com/redis/go-redis/v9\n\nNach 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.
Sie benötigen außerdem einen laufenden Redis-Server (lokal oder remote). Für Tests können Sie Redis in Docker starten:
\n\ndocker run --name my-redis -p 6379:6379 -d redis\n\nSchnellstart: Verbinden und erste Anfrage stellen
\n\nErstellen Sie eine Datei main.go und schreiben Sie ein einfaches Programm, das eine Verbindung zu Redis herstellt, einen Wert schreibt und liest.
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\nFühren Sie das Programm aus:
\n\ngo run main.go\n\nSie sollten Folgendes sehen:
\n\nVerbunden: PONG\nname: Alice\n\nWichtige Methoden von go-redis (8+ Stück)
\n\nAlle 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.
1. Set — Wert eines Schlüssels setzen
\nWas es tut: Setzt den Wert für den angegebenen Schlüssel. Sie können eine Lebensdauer (TTL) oder 0 für unbegrenzte Speicherung angeben.
\nParameter:
\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
Beispiel:
\nerr := rdb.Set(ctx, " Auch in der Bibliothek
ORM für JavaScript (Node.js): Vergleich von Sequelize, TypeORM, Prisma
HTML-Parsing in Rust: Bibliotheken und praktische Beispiele
Objekt-Serialisierung in C++: Bibliotheken, Methoden und Codebeispiele
StoreKit für Swift: Vollständige Anleitung mit Beispielen