Redis GETEX

Redis Getex



Redis es un almacén de datos de clave-valor que se utiliza como caché en memoria, base de datos, serie temporal, motor de transmisión, intermediario de mensajes, etc. Dado que el almacén de datos de Redis utiliza un formato de par clave-valor simple para almacenar datos, es muy útil para la memoria. eficiente. Además, la velocidad de consulta es muy alta con complejidades de tiempo bajas como O(1) y O(log(N)). Las claves Redis pueden contener diferentes estructuras de datos, como cadenas, conjuntos, hashes, conjuntos ordenados y listas.

Por lo general, los comandos GET y SET se usan para almacenar y recuperar valores de tipo cadena almacenados en una clave de Redis determinada. Estos dos comandos operan con una complejidad de tiempo constante.







Además, el comando GETEX está disponible para leer valores de cadena almacenados en una clave dada. Pero este comando también está asociado con una operación de escritura paralela. Esta guía se centrará en la sintaxis del comando GETEX, sus opciones y casos de uso.



TTL de una clave Redis

El valor de tiempo de vida (TTL) es el tiempo de caducidad de un dato determinado. Por lo general, un TTL se puede asociar con las filas de la base de datos. También se puede configurar un tiempo de espera con las teclas Redis. Entonces, un cliente de Redis puede verificar los segundos restantes que una clave determinada estará disponible en el almacén de datos. Redis ofrece un comando TTL para verificar el valor de tiempo de vida de una clave determinada. Si no se asocia ningún tiempo de espera con una tecla específica, el comando TTL devuelve -1. Usaremos el comando TTL en las siguientes secciones para verificar el tiempo restante de una tecla determinada.



El Comando GETEX

Como se destaca, el comando GETEX es más similar al comando GET, excepto que se puede usar para establecer un tiempo de vencimiento para la clave especificada. Además, una opción de comando puede eliminar un valor de tiempo de espera de una clave dada. La sintaxis del comando GETEX es la siguiente:





clave GETEX [ EX tiempo de espera_en_segundos | Tiempo de espera de PX_en_milisegundos | EXAT timeout_in_unix-tiempo-segundos | PXAT timeout_in_unix-time-milisegundos | PERSISTIR ]

llave: Esta es la clave que apunta a un valor de cadena.

Los siguientes argumentos opcionales se pueden usar para establecer un tiempo de espera en segundos o milisegundos.



EX: Esto establecerá el tiempo de caducidad en segundos para una clave dada.

PX: El valor de tiempo de espera de la clave se establecerá en milisegundos.

Además, podemos especificar un valor de marca de tiempo UNIX en segundos o milisegundos usando las siguientes opciones de comando EXAT y PXAT :

EXAT: El tiempo de caducidad se establecerá en el formato de marca de tiempo UNIX y la marca de tiempo será en segundos.

PXAT: El tiempo de espera para una clave Redis determinada se establecerá como una marca de tiempo UNIX en milisegundos.

PERSISTIR: Al especificar esto, puede eliminar el valor de tiempo de vida asociado con una clave específica.

El comando GETEX devuelve el valor de la clave especificada. Este comando funciona solo con valores de tipo cadena, pero no con valores hash, listas, conjuntos ordenados, etc. Si especifica una clave asociada con un valor que no es una cadena, el comando devolverá un error. Además, si la clave ya está caducada o no existe, el comando devolverá nulo.

En la siguiente sección, cubriremos el uso práctico del comando GETEX.

Caso de uso: enlace de restablecimiento temporal o generación de código PIN para recuperación de contraseña/OTP

Una empresa de alojamiento web proporciona una función de recuperación de contraseña para usuarios registrados. Como medida de seguridad, envían un nuevo enlace URL al usuario, que caducará en 5 minutos. La empresa ha estado usando el almacén de datos de Redis durante mucho tiempo y usa el comando GETEX para establecer un valor de tiempo de vida para un usuario determinado.

Supongamos que un usuario con user_id 1000 solicita una recuperación de contraseña. Entonces, la URL de recuperación se puede almacenar en la clave URL de recuperación: ID de usuario: 1000 . Podemos usar el comando SET para almacenar la URL de recuperación de la siguiente manera:

establecer URL de recuperación: ID de usuario: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Verifiquemos si la URL de la cadena está almacenada correctamente en la clave URL de recuperación: ID de usuario: 1000. Podemos usar el comando GETEX de la siguiente manera:

URL de recuperación de getex: ID de usuario: 1000

El resultado del comando anterior se muestra a continuación:

Si hemos utilizado el comando GET en lugar del comando GETEX, la salida será la misma.

Usemos el comando TTL para verificar si un tiempo de vencimiento está asociado con esta clave.

URL de recuperación de Ttl: ID de usuario: 1000

Como era de esperar, el comando TTL ha devuelto el -1, lo que significa que no hay tiempo de caducidad asociado con la clave especificada.

Según este ejemplo, la empresa de alojamiento debe establecer un tiempo de espera de 5 minutos para la URL de recuperación. Entonces, estaremos usando el EX opción de comando. Como 5 minutos son 300 segundos, podemos construir el comando GETEX de la siguiente manera:

URL de recuperación de getex: ID de usuario: 1000 EX 500

Ejecutemos el comando TTL varias veces para inspeccionar el tiempo restante que existirá la clave en el almacén de datos.

Como era de esperar, el tiempo está disminuyendo, y finalmente, el URL de recuperación: ID de usuario: 1000 se quitará la llave. La siguiente es la salida después de 5 minutos:

El comando ha devuelto -2, lo que significa que la clave ha caducado y se ha eliminado del almacén de datos.

A veces, es posible que deba eliminar el valor de tiempo de espera asociado con una clave determinada. Por lo tanto, la opción de comando PERSIST se puede usar para eliminar un valor TTL relacionado con una clave específica.

Vamos a crear otra clave de muestra y asignarle un valor de cadena. En este caso, especificaremos el valor TTL en milisegundos pasando el PX opción.

establecer KeytoTestPersist 'Esto caducará en 60 segundos' PX 50000

A continuación, estaremos comprobando el tiempo restante de la siguiente manera:

Como era de esperar, el TTL está disminuyendo. Llamemos al comando GETEX con la opción PERSIST de la siguiente manera:

getex KeytoTestPersist persistir

Idealmente, esto eliminaría el TTL asociado con esta clave. Inspeccionemos el TTL en busca de la clave. KeytoTestPersist.

El comando TTL devolvió el -1, lo que significa que no hay TTL asociado con la clave KeytoTestPersist.

Del mismo modo, el GETEX El comando se puede usar para establecer el tiempo de caducidad de las claves en la marca de tiempo de UNIX.

Conclusión

En resumen, el comando GETEX de Redis se puede usar para recuperar los valores de cadena almacenados en una clave dada como lo hace el comando GET. La única diferencia con el comando GETEX es que admite establecer y eliminar tiempos de vencimiento para una clave determinada. Admite varios argumentos opcionales para especificar el tiempo de caducidad en segundos, milisegundos y marca de tiempo UNIX segundos o milisegundos. Como se mencionó, el comando proporciona la opción PERSIST para eliminar el TTL asociado para una clave determinada. En general, el comando GETEX opera con una complejidad de tiempo constante.