Introduction à go-redis : un client Redis puissant pour Go
\n\nRedis est un magasin de données clé-valeur haute performance fonctionnant en mémoire vive. Il est utilisé pour la mise en cache, la gestion de sessions, les files d'attente de messages, les classements et bien plus encore. Pour interagir avec Redis depuis Go, il existe plusieurs bibliothèques, et go-redis (le paquet github.com/redis/go-redis/v9) est la plus populaire, activement maintenue et fonctionnelle.
Cette bibliothèque fournit une API Go propre et idiomatique pour travailler avec toutes les structures de données Redis (chaînes, listes, ensembles, hachages, ensembles triés, HyperLogLog, flux, données géospatiales) et prend en charge des fonctionnalités avancées telles que le clustering, Sentinel, Pub/Sub, le pipelining et les scripts Lua. go-redis prend entièrement en charge Redis 7 et 8.
\n\nDans ce guide, nous allons détailler l'installation, les méthodes principales, les erreurs typiques et écrire un exemple pratique concret.
\n\nInstallation de go-redis
\n\nL'installation se fait avec la commande standard go get :
go get github.com/redis/go-redis/v9\n\nAprès avoir exécuté cette commande, une dépendance apparaîtra dans votre go.mod. Assurez-vous d'avoir installé Go version 1.18 ou supérieure.
Vous aurez également besoin d'un serveur Redis en fonctionnement (local ou distant). Pour les tests, vous pouvez lancer Redis dans Docker :
\n\ndocker run --name my-redis -p 6379:6379 -d redis\n\nDémarrage rapide : connexion et première requête
\n\nCréez un fichier main.go et écrivez un programme simple qui se connecte à Redis, écrit et lit une valeur.
package main\n\nimport (\n "context"\n "fmt"\n "github.com/redis/go-redis/v9"\n)\n\nfunc main() {\n // Créer un contexte (recommandé : utiliser context.Background())\n ctx := context.Background()\n\n // Créer un client\n rdb := redis.NewClient(&redis.Options{\n Addr: "localhost:6379", // adresse du serveur Redis\n Password: "", // mot de passe (si présent)\n DB: 0, // numéro de la base de données (par défaut 0)\n })\n\n // Vérifier la connexion avec Ping\n pong, err := rdb.Ping(ctx).Result()\n if err != nil {\n panic(fmt.Sprintf("Impossible de se connecter à Redis : %v", err))\n }\n fmt.Println("Connecté :", pong)\n\n // Définir la clé "name" avec la valeur "Alice"\n err = rdb.Set(ctx, "name", "Alice", 0).Err()\n if err != nil {\n panic(err)\n }\n\n // Lire la valeur de la clé "name"\n val, err := rdb.Get(ctx, "name").Result()\n if err != nil {\n panic(err)\n }\n fmt.Println("name :", val)\n\n // Fermer la connexion à la fin du programme\n defer rdb.Close()\n}\n\nExécutez le programme :
\n\ngo run main.go\n\nVous devriez voir :
\n\nConnecté : PONG\nname : Alice\n\nMéthodes principales de go-redis (8 et plus)
\n\nToutes les méthodes de go-redis retournent un objet *Cmd (ou sa spécialisation), qui possède la méthode .Result() pour obtenir le résultat et l'erreur, .Val() pour obtenir uniquement la valeur et .Err() pour obtenir uniquement l'erreur. Cela permet de traiter les résultats de manière flexible.
1. Set — définition de la valeur d'une clé
\nCe qu'il fait : Définit la valeur pour la clé spécifiée. Vous pouvez définir une durée de vie (TTL) ou 0 pour un stockage illimité.
\nParamètres :
\n- \n
ctx context.Context— contexte pour gérer le temps d'exécution \n key string— nom de la clé \n value interface{}— valeur (sera sérialisée) \n expiration time.Duration— durée de vie (0 — pas de TTL) \n
Exemple :
\nerr := rdb.Set(ctx, " Aussi dans la bibliothèque
Client Redis en Rust : guide complet de la bibliothèque redis-rs
NetworkExtension Swift : guide complet avec exemples
Jetons JWT en Swift : guide complet pour travailler avec les JSON Web Tokens