Les hachages redis sont un type spécial de type de données qui est beaucoup plus similaire à l'objet JSON, à Java Hashmap ou à un dictionnaire Python. De plus, il s'agit d'une collection de paires de valeurs de champ qui peuvent être utilisées pour modéliser les objets de domaine. La structure de données de hachage redis est extrêmement efficace de la mémoire où chaque clé de hachage peut stocker jusqu'à quatre milliards de paires de valeurs de champ. Plus important encore, les opérations fondamentales de hachage comme HSET, HGET, HMGET, etc. opérer sur une complexité de temps constante.
Les touches de hachage redis ont un temps infini pour vivre (TTL), ce qui signifie qu'ils sont persistants, ils sont supprimés explicitement en utilisant des commandes comme Del. Dans cet article, nous nous concentrerons sur la définition du TTL pour Redis Hashs en utilisant la commande Expire.
Commande Redis Expire
La commande Expire est utilisée pour définir un délai d'expiration sur une clé donnée d'un hachage redis, set, liste, etc. La clé Redis est supprimée de la base de données si le délai d'expiration expire. Plus important encore, le délai d'attente n'est pas invalié jusqu'à ce que le contenu de la clé soit supprimé ou écrasé. La modification des valeurs associées à une clé n'affecte pas le temps d'expiration.
La syntaxe de la commande Expire est la suivante:
Expire Key Expiry_time_seconds [nx | GX | GT | Lt]
clé: La clé du hachage, de la liste ou de l'ensemble dont vous avez besoin pour définir un délai d'expiration.
expiry_time_seconds: La valeur de temps mort en secondes.
Plusieurs arguments facultatifs sont acceptés par la commande Expire.
NX: La valeur de délai d'expiration est définie uniquement si la clé spécifiée n'a pas déjà d'expiration.
Xx: Lorsque la clé spécifiée a une valeur de délai d'expiration existante, la nouvelle expiration est définie.
GT: Si la nouvelle valeur de délai d'expiration est supérieure à celle existante, la nouvelle expiration est définie.
LT: La nouvelle valeur de délai d'expiration est définie si celle existante est supérieure à la nouvelle.
Plus important encore, la commande Expire fonctionne sur une complexité de temps constante. L'Integer 1 est retourné si l'exécution de la commande est réussie. Si l'opération échoue en raison de mauvais arguments ou de clés inexistantes, 0 est retourné.
Nous utiliserons la commande Expire sur les hachages pour définir un temps d'expiration comme indiqué dans la section suivante:
Expire redis hash en utilisant la commande expire
Supposons qu'une information de session par utilisateur est stockée dans un hachage redis Session: ID: 1000: utilisateur: 10. Nous pouvons utiliser la commande hmset pour créer un hachage Redis avec plusieurs paires de valeurs de champ comme suit:
HMSET SESSION: ID: 1000: Utilisateur: 10 nom d'utilisateur "Jae" Cookie "Yes" Mot de passe "389ySU2"
Inspectons le hachage créé à l'aide de la commande hgetall.
HGETALL SESSION: ID: 1000: Utilisateur: 10
De plus, la session expire après 10 secondes si l'utilisateur est inactif pendant plus de 60 secondes. L'expiration de la session est réalisée en définissant le temps d'expiration pour le hachage qui stocke les informations de session.
Nous pouvons utiliser la commande Expire comme suit:
Expire Session: ID: 1000: Utilisateur: 10 10
Comme mentionné, la valeur de délai d'expiration est définie sur 10 secondes.
Comme prévu, la valeur de retour est 1, ce qui signifie que le TTL est défini avec succès pour le hachage. Vérifions l'heure restante avant que la touche de hachage ne soit supprimée du magasin Redis. La commande TTL peut être utilisée comme suit:
Session TTL: ID: 1000: utilisateur: 10
Comme le montre la sortie, trois secondes sont laissées avant de retirer automatiquement le hachage. Après 10 secondes, la sortie de commande TTL est la suivante:
Comme la réponse entière -2 est indiquée, le hachage n'existe pas.
Définir le délai d'attente en fonction de l'existence d'un temps d'expiration
La commande Expire accepte les arguments NX et XX pour définir un nouveau délai d'expiration basé sur l'existence de l'expiration pour un hachage spécifié. Créons un nouveau hachage avec le not timeout clé.
Nom de Hmset NotImeout "Test"
Essayons de définir une nouvelle expiration au hachage précédent. De plus, nous passons également l'argument XX à la commande Expire.
expire nottimeout 15 xx
Puisque nous spécifions le Xx Option Dans la commande, le temps d'expiration ne sera pas défini. L'option xx ne vous permet pas de définir un nouveau temps d'expiration s'il n'y a pas de délai d'expiration existant associé à la clé de hachage spécifiée.
Si nous utilisons le Nx Option, la valeur de délai d'expiration est définie sur 15.
expire nottimeout 15 nx
La commande expire renvoie la réponse entière 1, ce qui signifie que le délai d'attente est correctement défini.
Définir le délai d'attente en fonction de la valeur d'expiration existante
Les options GT et LT peuvent être utilisées pour définir le temps d'expiration du hachage en fonction de la longueur d'expiration existante.
Créons un nouveau hachage appelé hashwithtimeout.
Hmset HashwithTimeout Field1 Value1
Ensuite, nous avons établi une période d'expiration de 200 secondes pour le hachage.
expirer hashwithtimeout 200
Essayons de définir un nouveau délai de 100 secondes pour le hachage avec l'option GT comme suit:
expirer hashwithtimeout 100 gt
Depuis que l'option GT a été spécifiée, la commande Expire vérifiera si la nouvelle valeur de délai d'expiration est supérieure à celle existante et définira le nouveau temps d'expiration. Dans cet exemple, le nouveau délai d'expiration n'est pas supérieur au délai existant. Par conséquent, la commande ne définira pas le nouveau temps d'expiration et 0 sera retourné.
Utilisons l'option LT au lieu de GT. Étant donné que le nouveau temps d'expiration est inférieur à celui actuel, la commande suivante doit définir avec succès le nouveau délai d'expiration.
expirer hashwithtimeout 100 lt
Conclusion
En bref, la commande redis Expire est utilisée pour définir une valeur TTL pour une clé donnée. Par défaut, les clés de hachage redis ne sont associées à aucun délai qui est appelé non volatile. Comme discuté, la commande Expire est utilisée pour définir une valeur de délai d'expiration sur le hachage redis. Habituellement, le hachage est supprimé du magasin de données Redis après la durée spécifiée comme une valeur de délai d'expiration. Comme le montre les exemples, la commande Expire accepte certains arguments facultatifs comme XX, NX, GT et LT pour définir l'expiration du hachage en fonction d'une condition.