Redis getex

Redis getex
Redis es un almacén de datos de valor clave utilizado como caché en memoria, base de datos, series de tiempo, motor de transmisión, corredor de mensajes, etc. Dado que el almacén de datos de Redis utiliza un formato de par de valor clave simple para contener datos, es muy eficiente en la memoria. Además, la velocidad de consulta es muy alta con complejidades de tiempo bajos como O (1) y O (log (N)). Redis Keys puede contener diferentes estructuras de datos, como cadenas, conjuntos, hashes, conjuntos ordenados y listas.

Por lo general, los comandos GET y SET se utilizan para almacenar y recuperar los valores de tipo de cadena almacenados en una tecla Redis dada. Estos dos comandos funcionan con complejidad de tiempo constante.

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

Ttl de una llave redis

El valor de tiempo para vivir (TTL) es el tiempo de vencimiento de una data determinada. Por lo general, un TTL se puede asociar con filas de base de datos. También se puede configurar un tiempo de espera con las teclas Redis. Por lo tanto, un cliente de Redis puede verificar los segundos restantes de 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 un tiempo de espera con una clave especificada, el comando TTL devuelve -1. Usaremos el comando TTL en las siguientes secciones para verificar el tiempo restante de una clave determinada.

El comando getEx

Como se destacó, 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 determinada. La sintaxis del comando getEx es la siguiente:

GetEx Key [ex timeout_in_seconds | PX TIMEOUT_IN_MILLISECONDS | EXAT TIMEOUT_IN_UNIX Time-Seconds | PXAT TIMEOUT_IN_UNIX Time-MilliseConds | 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 vencimiento en segundos para una clave dada.

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

Además, podemos especificar un valor de marca de tiempo UNIX en segundos o milisegundos utilizando las siguientes opciones de comando Exatirse y Pxat:

Exat: El tiempo de vencimiento se establecerá en el formato de marca de tiempo UNIX, y la marca de tiempo estará en segundos.

PXAT: El tiempo de espera para una clave Redis dada 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 especificada.

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

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

Caso de uso: enlace de reinicio temporal o generación de código PIN para la recuperación de contraseña/OTPS

Una empresa de alojamiento web está proporcionando una función de recuperación de contraseña para usuarios registrados. Como medida de seguridad, envían un nuevo enlace de URL al usuario, que caducará en 5 minutos. La compañía ha estado utilizando el almacén de datos Redis durante mucho tiempo y utiliza el comando getEx para establecer un valor de tiempo 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 RecoveryUrl: UserID: 1000. Podemos usar el comando SET para almacenar la URL de recuperación de la siguiente manera:

Establecer RecoveryUrl: UserID: 1000 "https: // ABC.com/recovery/userId = 1000, key = sdfiUoe3290e9rjs "

Verifiquemos si la URL de la cadena se almacena correctamente en la clave RecoveryUrl: UserID: 1000. Podemos usar el comando getEx de la siguiente manera:

GetEx RecoveryUrl: UserDid: 1000

La salida del comando anterior se muestra en el siguiente:

Si hemos usado 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.

TTL RecoveryUrl: UserDid: 1000

Como se esperaba, el -1 ha sido devuelto por el comando TTL, lo que significa que no se asocia el tiempo de vencimiento con la clave especificada.

Según este ejemplo, la empresa de alojamiento necesita establecer un tiempo de espera de 5 minutos para la URL de recuperación. Entonces, estaremos usando el EX Opción de comando. Dado que 5 minutos es de 300 segundos, podemos construir el comando getEx de la siguiente manera:

GetEx RecoveryUrl: UserDid: 1000 EX 500

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

Como se esperaba, el tiempo está disminuyendo y, finalmente, el RecoveryUrl: UserID: 1000 se eliminará la clave. La siguiente es la salida después de 5 minutos:

El comando ha devuelto el -2, lo que significa que la clave está caducada y eliminada del almacén de datos.

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

Creemos otra clave de muestra y le asignemos un valor de cadena. En este caso, especificaremos el valor TTL en milisegundos pasando el Px opción.

Establezca keyTotestPersist "Esto expirará en 60 segundos" PX 50000

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

Como se esperaba, el TTL está disminuyendo. Llamemos al comando getEx con la opción Persist de la siguiente manera:

GetEx KeyTotestPersist Persist

Idealmente, esto eliminaría el TTL asociado con esta clave. Inspeccionemos el TTL para la llave Keytotestperist.

El comando TTL devolvió el -1, lo que significa que no se asocia TTL con la clave Keytotestperist.

Del mismo modo, el Getex El comando se puede usar para establecer el tiempo de vencimiento para las teclas en la marca de tiempo de Unix.

Conclusión

En resumen, el comando redis getEx se puede usar para recuperar los valores de cadena almacenados en una clave dada como lo hace el comando get lo hace. La única diferencia con el comando getEx es que admite la configuración y la eliminación de los tiempos de vencimiento para una clave dada. Admite varios argumentos opcionales para especificar el tiempo de vencimiento en segundos, milisegundos y unix-timestamp segundos o milisegundos. Como se discutió, el comando proporciona la opción Persist para eliminar el TTL asociado para una clave dada. En general, el comando getEx funciona con complejidad de tiempo constante.