Maîtriser les commandes GET et SET de Redis : Opérations de données de base
Redis est réputé pour sa rapidité et sa polyvalence, fonctionnant comme un magasin de structures de données en mémoire, un cache et un courtier de messages. Au cœur de toute interaction avec Redis se trouvent des commandes fondamentales utilisées pour gérer les paires clé-valeur qui définissent sa structure. Cet article sert de guide complet pour maîtriser les commandes SET et GET—le fondement de la persistance et de la récupération des données dans Redis.
Comprendre ces deux commandes simples mais puissantes est crucial pour la construction d'applications performantes. Que vous implémentiez une couche de mise en cache simple ou que vous gériez des données de session, une utilisation efficace de SET et GET garantit un accès rapide et une gestion fiable des données au sein de votre instance Redis.
Le Modèle Clé-Valeur de Redis
Avant de plonger dans les commandes, il est important de se rappeler que Redis fonctionne sur un modèle simple de magasin clé-valeur. Chaque élément de donnée (la valeur) est accessible à l'aide d'un identifiant unique (la clé). Les clés sont des chaînes de caractères, et les valeurs peuvent être de divers types de données (chaînes, listes, ensembles, hachages, etc.). SET et GET traitent principalement du type de données String, qui est le type le plus basique et le plus fréquemment utilisé dans Redis.
1. Définir des Données : La Commande SET
La commande SET est utilisée pour attribuer une valeur à une clé. Si la clé contient déjà des données, la commande SET écrasera la valeur existante. Sa syntaxe de base est simple.
Syntaxe et Utilisation de Base
La forme la plus simple ne nécessite que la clé et la valeur :
SET cle valeur
Exemple : Stocker le nom d'un utilisateur
127.0.0.1:6379> SET user:100:name "Alice Johnson"
OK
127.0.0.1:6379> GET user:100:name
"Alice Johnson"
Options Avancées de SET : NX, XX et Expiration
La puissance de SET réside dans ses arguments optionnels, qui permettent une définition conditionnelle atomique et la gestion du temps de vie (TTL). Ces options sont essentielles pour implémenter correctement les verrous et les caches.
A. Définition Conditionnelle (NX et XX)
Ces options contrôlent quand une opération de définition se produit, empêchant les écrasements accidentels ou garantissant qu'un écrasement ne se produit que si la clé existe.
-
NX(Not Exists) : Ne définissez la clé que si elle n'existe pas déjà. C'est excellent pour implémenter des verrous distribués simples.
redis SET my_lock_key some_unique_value NX -
XX(Exists) : Ne définissez la clé que si elle existe déjà. Utile pour mettre à jour des clés spécifiques uniquement lorsque vous êtes certain qu'elles sont déjà renseignées.
redis SET session:token:456 new_value XX
B. Définir le Temps d'Expiration (TTL)
Pour gérer la mémoire et implémenter la mise en cache basée sur le temps, vous pouvez définir un temps d'expiration directement dans la commande SET. C'est beaucoup plus efficace que de définir la clé puis d'appeler EXPIRE séparément.
EX seconds: Définit le temps d'expiration en secondes.PX milliseconds: Définit le temps d'expiration en millisecondes.EXAT timestamp: Définit l'expiration à un horodatage Unix spécifique (secondes).PXAT timestamp: Définit l'expiration à un horodatage Unix spécifique (millisecondes).
Exemple : Définir une clé pour qu'elle expire dans une heure (3600 secondes)
127.0.0.1:6379> SET cache:product:500 "Product Details" EX 3600
OK
127.0.0.1:6379> TTL cache:product:500
(integer) 3598
Bonne pratique : Utilisez toujours
SET cle valeur EX N(ouPX N) lors de la mise en cache. Cela garantit que même si Redis plante et redémarre, les clés expirées sont éventuellement nettoyées, empêchant l'accumulation de données obsolètes.
Combinaison d'Options
Toutes les options peuvent souvent être combinées pour des opérations atomiques complexes :
# Définir la clé seulement si elle n'existe pas, et la faire expirer dans 60 secondes
SET my_config_setting "active" NX EX 60
2. Récupérer des Données : La Commande GET
La commande GET récupère la valeur de chaîne associée à une clé donnée. C'est l'une des opérations les plus rapides effectuées par Redis, souvent en quelques microsecondes.
Syntaxe et Utilisation de Base
GET cle
Exemple : Récupérer le nom d'utilisateur stocké
127.0.0.1:6379> GET user:100:name
"Alice Johnson"
Gestion des Clés Inexistantes
Si la clé n'existe pas, GET renvoie une réponse spéciale indiquant que rien n'a été trouvé :
127.0.0.1:6379> GET non_existent_key
(nil)
Dans le code d'application, recevoir (nil) est la manière standard de déterminer que les données sont manquantes, déclenchant généralement un manque de cache où l'application doit récupérer les données de la source principale (comme une base de données) et ensuite les réécrire dans Redis.
Récupérer les Valeurs avec des Informations d'Expiration (GET avec GETEX)
Alors que la commande GET de base ne renvoie que la valeur, vous devez parfois savoir si la clé est sur le point d'expirer. La commande GETEX (ou l'utilisation de GET combinée à des indicateurs spécifiques dans les versions modernes de Redis) peut renvoyer à la fois la valeur et le temps de vie restant (TTL).
Cependant, pour une utilisation standard, l'approche la plus simple est d'utiliser GET suivi de TTL si la vérification de l'expiration est nécessaire, ou simplement de s'appuyer sur la disparition automatique de la clé.
3. Application Pratique : Mise en Cache avec GET et SET
Le cas d'utilisation fondamental de GET et SET est la mise en œuvre d'un simple modèle de cache-aside.
Étapes de la Logique Applicative :
1. Tentative de Récupération (GET) : L'application essaie d'abord de récupérer les données en utilisant GET cle.
2. Cache Hit : Si le résultat n'est pas (nil), les données sont renvoyées immédiatement (rapide).
3. Cache Miss : Si le résultat est (nil) :
a. L'application récupère les données du magasin de données principal lent (par exemple, PostgreSQL).
b. L'application réécrit les données fraîches dans Redis en utilisant SET cle valeur EX [durée].
c. Les données sont ensuite renvoyées à l'utilisateur.
Ce modèle réduit considérablement la latence en servant les données fréquemment consultées directement depuis la mémoire.
Résumé et Étapes Suivantes
Les commandes SET et GET sont les points d'entrée essentiels pour interagir avec les données Redis. Bien que simples en apparence, les arguments optionnels de SET—en particulier NX, XX et les modificateurs d'expiration (EX, PX)—fournissent le contrôle atomique nécessaire pour des systèmes robustes de qualité production.
Points Clés à Retenir :
* Utilisez SET cle valeur pour des écritures simples.
* Utilisez SET cle valeur NX pour éviter d'écraser les données existantes.
* Utilisez SET cle valeur EX 3600 pour garantir que les clés expirent automatiquement après une heure.
* Utilisez GET cle pour récupérer les données ; attendez-vous à (nil) si la clé est manquante ou expirée.
Une fois que vous êtes à l'aise avec ces opérations fondamentales, explorez les autres types de données de Redis, tels que les Hashes (HSET, HGET) et les Listes (LPUSH, RPOP), pour libérer tout le potentiel de ce puissant magasin en mémoire.