Redis GETEX

Redis Getex



Redis est un magasin de données clé-valeur utilisé comme cache en mémoire, base de données, série chronologique, moteur de flux, courtier de messages, etc. Étant donné que le magasin de données Redis utilise un simple format de paire clé-valeur pour stocker les données, il est très mémoire efficace. De plus, la vitesse d'interrogation est très élevée avec de faibles complexités temporelles comme O(1) et O(log(N)). Les clés Redis peuvent contenir différentes structures de données, telles que des chaînes, des ensembles, des hachages, des ensembles triés et des listes.

Habituellement, les commandes GET et SET sont utilisées pour stocker et récupérer des valeurs de type chaîne stockées sur une clé Redis donnée. Ces deux commandes fonctionnent avec une complexité temporelle constante.







De plus, la commande GETEX est disponible pour lire les valeurs de chaîne stockées à une clé donnée. Mais cette commande est également associée à une opération d'écriture parallèle. Ce guide se concentrera sur la syntaxe de la commande GETEX, ses options et ses cas d'utilisation.



TTL d'une clé Redis

La valeur de durée de vie (TTL) est l'heure d'expiration d'une donnée donnée. Généralement, un TTL peut être associé à des lignes de base de données. Un délai d'attente peut également être défini avec les clés Redis. Ainsi, un client Redis peut vérifier les secondes restantes pendant lesquelles une clé donnée sera disponible dans le magasin de données. Redis propose une commande TTL pour vérifier la durée de vie d'une clé donnée. Si aucun délai d'attente n'est associé à une clé spécifiée, la commande TTL renvoie -1. Nous utiliserons la commande TTL dans les sections suivantes pour vérifier le temps restant d'une clé donnée.



La commande GETEX

Comme indiqué, la commande GETEX est plus similaire à la commande GET, sauf qu'elle peut être utilisée pour définir un délai d'expiration pour la clé spécifiée. De plus, une option de commande peut supprimer une valeur de délai d'attente d'une clé donnée. La syntaxe de la commande GETEX est la suivante :





Clé GETEX [ EX timeout_in_seconds | Délai d'expiration PX_en_millisecondes | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milliseconds | PERSISTER ]

clé: Il s'agit de la clé qui pointe vers une valeur de chaîne.

Les arguments facultatifs suivants peuvent être utilisés pour définir un délai d'attente en secondes ou en millisecondes.



EX: Cela définira le délai d'expiration en secondes pour une clé donnée.

PX : La valeur du délai d'expiration de la clé sera définie en millisecondes.

De plus, nous pouvons spécifier une valeur d'horodatage UNIX en secondes ou en millisecondes à l'aide des options de commande suivantes EXATER et PXAT :

EXATER : Le délai d'expiration sera défini au format d'horodatage UNIX et l'horodatage sera en secondes.

PXAT : Le délai d'attente pour une clé Redis donnée sera défini comme un horodatage UNIX en millisecondes.

PERSISTER: En spécifiant cela, vous pouvez supprimer la valeur de durée de vie associée à une clé spécifiée.

La commande GETEX renvoie la valeur de la clé spécifiée. Cette commande fonctionne uniquement avec des valeurs de type chaîne, mais pas avec des hachages, des listes, des ensembles triés, etc. Si vous spécifiez une clé associée à une valeur non chaîne, la commande renverra une erreur. De plus, si la clé est déjà expirée ou n'existe pas, la commande renverra néant.

Dans la section suivante, nous couvrirons l'utilisation pratique de la commande GETEX.

Cas d'utilisation — Lien de réinitialisation temporaire ou génération de code PIN pour la récupération de mot de passe/OTP

Une société d'hébergement Web fournit une fonctionnalité de récupération de mot de passe pour les utilisateurs enregistrés. Par mesure de sécurité, ils envoient un nouveau lien URL à l'utilisateur, qui expirera dans les 5 minutes. L'entreprise utilise le magasin de données Redis depuis longtemps et utilise la commande GETEX pour définir une valeur de durée de vie pour un utilisateur donné.

Supposons qu'un utilisateur avec user_id 1000 demande une récupération de mot de passe. Ainsi, l'URL de récupération peut être stockée dans la clé URL de récupération : ID utilisateur : 1000 . Nous pouvons utiliser la commande SET pour stocker l'URL de récupération comme suit :

Positionner URL de récupération :ID utilisateur : 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Vérifions si l'URL de la chaîne est correctement stockée à la clé URL de récupération : ID utilisateur : 1000. Nous pouvons utiliser la commande GETEX comme suit :

getex RecoveryURL :ID utilisateur : 1000

La sortie de la commande précédente est illustrée ci-dessous :

Si nous avons utilisé la commande GET au lieu de la commande GETEX, la sortie sera la même.

Utilisons la commande TTL pour vérifier si un délai d'expiration est associé à cette clé.

URL de récupération TTL :ID utilisateur : 1000

Comme prévu, le -1 a été renvoyé par la commande TTL, ce qui signifie qu'aucun délai d'expiration n'est associé à la clé spécifiée.

Selon cet exemple, la société d'hébergement doit définir un délai d'attente de 5 minutes pour l'URL de récupération. Ainsi, nous utiliserons le EX possibilité de commande. Puisque 5 minutes correspondent à 300 secondes, nous pouvons construire la commande GETEX comme suit :

getex RecoveryURL :ID utilisateur : 1000 EX 500

Exécutons la commande TTL plusieurs fois pour inspecter le temps restant pendant lequel la clé existera dans le magasin de données.

Comme prévu, le temps diminue, et finalement, le URL de récupération : ID utilisateur : 1000 clé sera supprimée. Voici la sortie après 5 minutes :

Le -2 a été renvoyé par la commande, ce qui signifie que la clé a expiré et a été supprimée du magasin de données.

Parfois, vous devrez peut-être supprimer la valeur de délai d'attente associée à une clé donnée. Ainsi, l'option de commande PERSIST peut être utilisée pour supprimer une valeur TTL liée à une clé spécifiée.

Créons un autre exemple de clé et affectons-lui une valeur de chaîne. Dans ce cas, nous spécifierons la valeur TTL en millisecondes en passant le PX option.

Positionner KeytoTestPersist 'Ceci sera expiré dans 60 secondes' PX 50000

Ensuite, nous vérifierons le temps restant comme suit :

Comme prévu, le TTL diminue. Appelons la commande GETEX avec l'option PERSIST comme suit :

getex KeytoTestPersist persiste

Idéalement, cela supprimerait le TTL associé à cette clé. Inspectons le TTL pour la clé KeytoTestPersist.

La commande TTL a renvoyé le -1, ce qui signifie qu'aucun TTL n'est associé à la clé KeytoTestPersist.

De même, le GETEX La commande peut être utilisée pour définir le délai d'expiration des clés dans l'horodatage UNIX.

Conclusion

En résumé, la commande Redis GETEX peut être utilisée pour récupérer les valeurs de chaîne stockées à une clé donnée comme le fait la commande GET. La seule différence avec la commande GETEX est qu'elle prend en charge la définition et la suppression des délais d'expiration pour une clé donnée. Il prend en charge plusieurs arguments facultatifs pour spécifier le délai d'expiration en secondes, millisecondes et secondes ou millisecondes d'horodatage UNIX. Comme indiqué, la commande fournit l'option PERSIST pour supprimer le TTL associé pour une clé donnée. Globalement, la commande GETEX fonctionne avec une complexité temporelle constante.