Redis Keys: Creación automática y eliminación

0

Creación automática y eliminación de Redis keys

Hasta ahora, en nuestros ejemplos, nunca tuvimos que crear listas vacías antes de empujar elementos o eliminar listas vacías cuando ya no tenían elementos adentro. Es responsabilidad de Redis eliminar Redis Keys cuando las listas se dejan vacías, o crear una lista vacía si la Redis Keys no existe y estamos tratando de agregarle elementos, por ejemplo, con LPUSH.

Esto no es específico de las listas, se aplica a todos los tipos de datos de Redis compuestos de múltiples elementos: Conjuntos, Conjuntos ordenados y Hashes.

Básicamente, podemos resumir el comportamiento con tres reglas:

  1. Cuando agregamos un elemento a un tipo de datos agregados, si la Redis Keys objetivo no existe, se crea un tipo de datos agregado vacío antes de agregar el elemento.
  2. Cuando eliminamos elementos de un tipo de datos agregado, si el valor permanece vacío, las Redis keys se destruyen automáticamente.
  3. Llamar a un comando de solo lectura como LLEN (que devuelve la longitud de la lista), o un comando de escritura que elimina elementos, con una tecla vacía, siempre produce el mismo resultado que si la tecla contiene un tipo de agregado vacío del tipo comando espera encontrar.
Ejemplos de la regla 1:
> del mylist
(integer) 1
> lpush mylist 1 2 3
(integer) 3

Sin embargo, no podemos realizar operaciones contra el tipo incorrecto si la Redis Keys existe:

> set foo bar
OK
> lpush foo 1 2 3
(error) WRONGTYPE Operation against a key holding the wrong kind of value
> type foo
string
Ejemplos de la regla 2:
> lpush mylist 1 2 3
(integer) 3
> exists mylist
(integer) 1
> lpop mylist
"3"
> lpop mylist
"2"
> lpop mylist
"1"
> exists mylist
(integer) 0

La Redis Keys ya no existe después de que se hayan reventado todos los elementos.

Ejemplos de la regla 3:
> del mylist
(integer) 0
> llen mylist
(integer) 0
> lpop mylist
(nil)

A continuación te acercamos un listado de diversos posts de Redis, para que puedas continuar leyendo sobre el tema:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *