Redis Hashes es un tipo especial de datos que es mucho más similar al objeto JSON, Java Hashmap o un diccionario de Python. Además, es una colección de pares de valor de campo que se pueden usar para modelar objetos de dominio. La estructura de datos de Redis hash es extremadamente eficiente en la memoria, donde cada tecla hash puede almacenar hasta cuatro mil millones de pares de valor de campo. Lo más importante es que las operaciones hash fundamentales como HSET, HGGE, HMGGE, etc. operar con complejidad de tiempo constante.
Las claves de hash redis tienen tiempo infinito para vivir (TTL), lo que significa que son persistentes, se eliminan explícitamente utilizando comandos como Del. En este artículo, nos centraremos en establecer el TTL para Redis Hashes utilizando el comando expirar.
Redis Expire Command
El comando expirar se usa para establecer un tiempo de espera en una clave determinada de un hash, set, lista, etc. La tecla Redis se elimina de la base de datos si el tiempo de espera expira. Lo más importante, el tiempo de espera no está claro hasta que el contenido de la llave se elimine o sobrescribe. Alterar los valores asociados con una clave no afecta el tiempo de vencimiento.
La sintaxis del comando expirar es la siguiente:
Expirar clave expiry_time_seconds [nx | GX | GT | LT]
llave: La clave del hash, la lista o el establecimiento que necesita para establecer un tiempo de espera.
expirty_time_seconds: El valor de tiempo de espera en segundos.
Varios argumentos opcionales son aceptados por el comando expirar.
NX: El valor de tiempo de espera se establece solo si la clave especificada ya no tiene cadena.
Xx: Cuando la clave especificada tiene un valor de tiempo de espera existente, se establece el nuevo vencimiento.
GT: Si el nuevo valor de tiempo de espera es mayor que el existente, el nuevo vencimiento está establecido.
LT: El nuevo valor de tiempo de espera se establece si el existente es mayor que el nuevo.
Lo más importante, el comando expirar funciona con complejidad de tiempo constante. El entero 1 se devuelve si la ejecución del comando es exitosa. Si la operación falla debido a argumentos incorrectos o claves no existentes, 0 se devuelve.
Usaremos el comando expirar en hashes para establecer un tiempo de vencimiento como se muestra en la siguiente sección:
Expirar hash redis usando el comando expirar
Supongamos que una información de sesión por usuario se almacena en un hash redis Sesión: ID: 1000: Usuario: 10. Podemos usar el comando hmset para crear un hash redis con múltiples pares de valor de campo de la siguiente manera:
HMSET SESIÓN: ID: 1000: Usuario: 10 Nombre de usuario "Jae" Cookie "Yes" Password "389ysu2"
Inspeccionemos el hash creado usando el comando hgetall.
HGGELL SESIÓN: ID: 1000: Usuario: 10
Además, la sesión expira después de 10 segundos si el usuario está inactivo durante más de 60 segundos. La expiración de la sesión se logra estableciendo el tiempo de vencimiento del hash que almacena la información de la sesión.
Podemos usar el comando expirar de la siguiente manera:
Sesión de caducidad: ID: 1000: Usuario: 10 10
Como se mencionó, el valor de tiempo de espera se establece en 10 segundos.
Como se esperaba, el valor de retorno es 1, lo que significa que el TTL se establece con éxito para el hash. Verifiquemos la hora izquierda antes de que se retire la tecla hash de la tienda Redis. El comando TTL se puede usar de la siguiente manera:
Sesión TTL: ID: 1000: Usuario: 10
Como se muestra en la salida, quedan tres segundos antes de eliminar el hash automáticamente. Después de 10 segundos, la salida del comando TTL es la siguiente:
Como se indica la respuesta entera -2, el hash no existe.
Establecer un tiempo de espera basado en la existencia de un tiempo de vencimiento
El comando expirar acepta argumentos NX y XX para establecer un nuevo tiempo de espera basado en la existencia de caducidad para un hash específico. Creemos un nuevo hash con el no más llave.
HMSET NOMBRE Nombre "Prueba"
Intentemos establecer un nuevo vencimiento al hash anterior. Además, pasamos el argumento xx al comando expirar también.
caducar noteut 15 xx
Desde que especificamos el Xx Opción En el comando, el tiempo de vencimiento no se establece. La opción XX no le permite establecer un nuevo tiempo de vencimiento si no hay un tiempo de espera existente asociado con la clave hash especificada.
Si usamos el Nx Opción, el valor de tiempo de espera se establece en 15.
caducar de NotimeOut 15 NX
El comando expirar devuelve la respuesta Integer 1, lo que significa que el tiempo de espera se establece correctamente.
Establecer el tiempo de espera basado en el valor de tiempo de espera existente
Las opciones GT y LT se pueden usar para establecer el tiempo de caducidad hash en función de la longitud de tiempo de espera existente.
Creemos un nuevo hash llamado Hashwithtimeut.
hmset hashwithtimeout campo1 valor1
A continuación, establecemos un tiempo de vencimiento de 200 segundos para el hash.
expirar hashwithtimeout 200
Intentemos establecer un nuevo tiempo de espera de 100 segundos para el hash junto con la opción GT de la siguiente manera:
expirar hashwithtimeout 100 gt
Dado que se ha especificado la opción GT, el comando expire verificará si el nuevo valor de tiempo de espera es mayor que el existente y establece el nuevo tiempo de vencimiento. En este ejemplo, el nuevo tiempo de espera no es mayor que el tiempo de espera existente. Por lo tanto, el comando no establecerá el nuevo tiempo de vencimiento y se devolverá 0.
Usemos la opción LT en lugar de GT. Dado que el nuevo tiempo de vencimiento es más bajo que el actual, el siguiente comando debe establecer con éxito el nuevo tiempo de espera.
expirar hashwithtimeout 100 lt
Conclusión
En resumen, el comando Redis expire se usa para establecer un valor TTL para una clave dada. Por defecto, las claves del hash redis no están asociadas con ningún tiempo de espera que se denomina no volátil. Como se discutió, el comando expirar se usa para establecer un valor de tiempo de espera en el hash redis. Por lo general, el hash se elimina del almacén de datos Redis después de la cantidad de tiempo especificada como un valor de tiempo de espera. Como se muestra en los ejemplos, el comando expirar acepta algunos argumentos opcionales como XX, NX, GT y LT para establecer la cadena de hash basada en una condición.