Redis Getex

Redis Getex
Redis est un magasin de données de valeur clé utilisé comme cache en mémoire, base de données, séries chronologiques, moteur de flux, courtier de messages, etc. Étant donné que le magasin de données Redis utilise un format de paire de valeurs de clé simple pour contenir des données, il est très efficace par la mémoire. De plus, la vitesse de requête est très élevée avec de faibles complexités de temps comme O (1) et O (log (n)). Redis Keys peut 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 and Set sont utilisées pour stocker et récupérer les valeurs de type String stockées à une clé Redis donnée. Ces deux commandes fonctionnent avec une complexité de temps 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 commande GetEx, ses options et les cas d'utilisation.

Ttl d'une clé redis

Le temps de vivre (TTL) est le temps d'expiration d'un morceau de données donné. Habituellement, un TTL peut être associé aux lignes de base de données. Un délai d'expiration peut également être défini avec Redis Keys. Ainsi, un client Redis peut vérifier les secondes restantes qu'une clé donnée sera disponible dans le magasin de données. Redis propose une commande TTL pour vérifier l'heure à vivre d'une valeur donnée. Si aucun temps mort 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 mis en évidence, la commande getEx est plus similaire à la commande get, sauf qu'elle peut être utilisée pour définir un temps d'expiration pour la clé spécifiée. De plus, une option de commande peut supprimer une valeur de délai de temps d'une touche donnée. La syntaxe de commande GetEx est la suivante:

Key GetEx [ex timeout_in_seconds | Px timeout_in_milliseconds | Exat timeout_in_unix-time-ceconds | Pxat timeout_in_unix-time-millisecondes | PERSISTER]

clé: C'est 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'expiration en secondes ou en millisecondes.

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

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

De plus, nous pouvons spécifier une valeur d'horodatage UNIX en secondes ou millisecondes en utilisant les options de commande suivantes Exat et Pxat:

Exat: Le temps d'expiration sera réglé dans le format d'horodatage Unix, et l'horodatage sera en quelques secondes.

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

PERSISTER: En spécifiant cela, vous pouvez supprimer l'heure de la valeur de vivre associée à une clé spécifiée.

La commande getEx renvoie la valeur de la clé spécifiée. Cette commande ne fonctionne qu'avec des valeurs de type chaîne mais pas des hachages, des listes, des ensembles triés, etc. Si vous spécifiez une clé associée à une valeur non corporelle, la commande renvoie une erreur. De plus, si la clé est déjà expirée ou n'existe pas, la commande reviendra 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 récupération de mot de passe / OTPS

Une société d'hébergement Web fournit une fonction de récupération de mot de passe pour les utilisateurs enregistrés. En tant que 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 un temps pour vivre 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 à la clé RecoveryUrl: utilisateur: 1000. Nous pouvons utiliser la commande set pour stocker l'URL de récupération comme suit:

Set RecoveryUrl: UserID: 1000 "https: // ABC.com / recouvre / userId = 1000, key = sdfiuoe3290e9rjs "

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

GetEx RecoveryUrl: UserID: 1000

La sortie de la commande précédente est affichée dans les éléments suivants:

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 temps d'expiration est associé à cette clé.

TTL RecoveryUrl: UserID: 1000

Comme prévu, le -1 a été retourné par la commande TTL, ce qui signifie qu'aucun temps 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 de 5 minutes pour l'URL de récupération. Donc, nous utiliserons le EX Option de commande. Puisque 5 minutes est de 300 secondes, nous pouvons construire la commande GetEx comme suit:

GetEx Recoveryurl: UserID: 1000 ex 500

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

Comme prévu, le temps diminue, et finalement, le RecoveryUrl: utilisateur: 1000 La clé sera supprimée. Ce qui suit est la sortie après 5 minutes:

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

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

Créons une autre clé de clé et attribuons une valeur de chaîne. Dans ce cas, nous spécifierons la valeur TTL en millisecondes en passant le Px option.

Définir KeyToteStpersiste "Cela sera expiré dans les 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 persistant comme suit:

GetEx KeyTotestpersiste persiste

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

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

De même, le GetEx La commande peut être utilisée pour définir le temps d'expiration pour les touches dans Unix Timestamp.

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'il prend en charge les réglages et la suppression des temps d'expiration pour une clé donnée. Il prend en charge plusieurs arguments facultatifs pour spécifier le temps d'expiration en secondes, en millisecondes et en unix-timestamp secondes ou en millisecondes. Comme discuté, la commande fournit l'option persistant pour supprimer le TTL associé pour une clé donnée. Dans l'ensemble, la commande GetEx fonctionne avec une complexité de temps constante.