Redis GETEX

Redis Getex



Redis és un magatzem de dades de valors clau que s'utilitza com a memòria cau a la memòria, base de dades, sèries temporals, motor de transmissió, intermediari de missatges, etc. Com que el magatzem de dades de Redis utilitza un format de parell de valors-clau senzill per contenir dades, és molt memòria. eficient. A més, la velocitat de consulta és molt alta amb complexitats de temps baixes com O (1) i O (log (N)). Les claus Redis poden contenir diferents estructures de dades, com ara cadenes, conjunts, hashes, conjunts ordenats i llistes.

Normalment, les ordres GET i SET s'utilitzen per emmagatzemar i recuperar valors de tipus cadena emmagatzemats en una clau Redis determinada. Aquestes dues ordres funcionen amb una complexitat de temps constant.







A més, l'ordre GETEX està disponible per llegir valors de cadena emmagatzemats en una clau determinada. Però aquesta ordre també s'associa amb una operació d'escriptura paral·lela. Aquesta guia se centrarà en la sintaxi de l'ordre GETEX, les seves opcions i casos d'ús.



TTL d'una clau Redis

El valor del temps de vida (TTL) és el temps d'expiració d'una dada determinada. Normalment, un TTL es pot associar amb les files de la base de dades. També es pot establir un temps d'espera amb les tecles Redis. Així, un client de Redis pot comprovar els segons restants que una clau determinada estarà disponible al magatzem de dades. Redis ofereix una ordre TTL per comprovar el valor de temps de vida d'una clau determinada. Si no s'associa cap temps d'espera amb una clau especificada, l'ordre TTL retorna -1. Utilitzarem l'ordre TTL a les seccions següents per comprovar el temps restant d'una clau determinada.



L'ordre GETEX

Com s'ha destacat, l'ordre GETEX és més semblant a l'ordre GET, excepte que es pot utilitzar per establir un temps de caducitat per a la clau especificada. A més, una opció d'ordre pot eliminar un valor de temps d'espera d'una clau determinada. La sintaxi de l'ordre GETEX és la següent:





clau GETEX [ EX timeout_in_segons | Temps d'espera PX_en_milisegons | EXAT timeout_in_unix-time-segons | PXAT timeout_in_unix-time-milisegons | PERSISTIR ]

clau: Aquesta és la clau que apunta a un valor de cadena.

Els arguments opcionals següents es poden utilitzar per establir un temps d'espera en segons o mil·lisegons.



EX: Això establirà el temps de caducitat en segons per a una clau determinada.

PX: El valor del temps d'espera de la clau s'establirà en mil·lisegons.

A més, podem especificar un valor de marca de temps UNIX en segons o mil·lisegons mitjançant les opcions d'ordre següents EXAT i PXAT :

EXAT: L'hora de caducitat s'establirà en el format de marca de temps UNIX i la marca de temps serà en segons.

PXAT: El temps d'espera per a una clau Redis determinada s'establirà com a marca de temps UNIX en mil·lisegons.

PERSISTIR: Si especifiqueu això, podeu eliminar el valor de temps de vida associat a una clau especificada.

L'ordre GETEX retorna el valor de la clau especificada. Aquesta ordre només funciona amb valors de tipus cadena però no hash, llistes, conjunts ordenats, etc. Si especifiqueu una clau associada amb un valor que no sigui cadena, l'ordre retornarà un error. A més, si la clau ja ha caducat o no existeix, l'ordre tornarà nil.

A la secció següent, tractarem l'ús pràctic de l'ordre GETEX.

Cas d'ús — Enllaç de restabliment temporal o generació de codi PIN per a la recuperació de contrasenyes/OTP

Una empresa d'allotjament web ofereix una funció de recuperació de contrasenyes per als usuaris registrats. Com a mesura de seguretat, envien un nou enllaç URL a l'usuari, que caducarà en 5 minuts. L'empresa ha estat utilitzant el magatzem de dades Redis durant molt de temps i utilitza l'ordre GETEX per establir un valor de temps de vida per a un usuari determinat.

Suposem que un usuari amb user_id 1000 sol·licita una recuperació de la contrasenya. Per tant, l'URL de recuperació es pot emmagatzemar a la clau RecoveryURL:UserID:1000 . Podem utilitzar l'ordre SET per emmagatzemar l'URL de recuperació de la següent manera:

conjunt RecoveryURL:ID d'usuari: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Comprovem si l'URL de la cadena s'emmagatzema correctament a la clau RecoveryURL:UserID:1000. Podem utilitzar l'ordre GETEX de la següent manera:

getex RecoveryURL:ID d'usuari: 1000

La sortida de l'ordre anterior es mostra a continuació:

Si hem utilitzat l'ordre GET en comptes de l'ordre GETEX, la sortida serà la mateixa.

Utilitzem l'ordre TTL per comprovar si s'associa un temps de caducitat amb aquesta clau.

Ttl RecoveryURL:ID d'usuari: 1000

Com era d'esperar, l'ordre TTL ha retornat -1, la qual cosa significa que no s'associa cap temps de caducitat amb la clau especificada.

Segons aquest exemple, l'empresa d'allotjament ha d'establir un temps d'espera de 5 minuts per a l'URL de recuperació. Per tant, farem servir el EX opció de comanda. Com que 5 minuts són 300 segons, podem construir l'ordre GETEX de la següent manera:

getex RecoveryURL:ID d'usuari: 1000 EX 500

Executem l'ordre TTL unes quantes vegades per inspeccionar el temps restant que la clau existirà al magatzem de dades.

Com era d'esperar, el temps va disminuint i, finalment, el RecoveryURL:UserID:1000 s'eliminarà la clau. El següent és el resultat després de 5 minuts:

L'ordre ha retornat el -2, el que significa que la clau ha caducat i s'ha suprimit del magatzem de dades.

De vegades, és possible que hàgiu d'eliminar el valor de temps d'espera associat a una clau determinada. Per tant, l'opció d'ordre PERSIST es pot utilitzar per eliminar un valor TTL relacionat amb una clau especificada.

Creem una altra clau de mostra i assignem-li un valor de cadena. En aquest cas, especificarem el valor TTL en mil·lisegons passant el PX opció.

conjunt KeytoTestPersist 'Això caducarà en 60 segons' PX 50000

A continuació, comprovarem el temps restant de la següent manera:

Com era d'esperar, el TTL està disminuint. Anem a cridar l'ordre GETEX amb l'opció PERSIST de la següent manera:

getex KeytoTestPersist persisteix

Idealment, això eliminaria el TTL associat a aquesta clau. Inspeccionem el TTL per trobar la clau KeytoTestPersist.

L'ordre TTL va retornar el -1, el que significa que no hi ha cap TTL associat a la clau KeytoTestPersist.

De la mateixa manera, el GETEX L'ordre es pot utilitzar per establir el temps de caducitat de les claus a la marca de temps UNIX.

Conclusió

En resum, l'ordre Redis GETEX es pot utilitzar per recuperar els valors de cadena emmagatzemats en una clau determinada com ho fa l'ordre GET. L'única diferència amb l'ordre GETEX és que admet la configuració i eliminació dels temps de caducitat d'una clau determinada. Admet diversos arguments opcionals per especificar el temps de caducitat en segons, mil·lisegons i segons o mil·lisegons de marca de temps UNIX. Com s'ha comentat, l'ordre proporciona l'opció PERSIST per eliminar el TTL associat per a una clau determinada. En general, l'ordre GETEX funciona amb una complexitat de temps constant.