Comandos Generales de Redis: Guía Completa

Redis es un sistema de almacenamiento clave-valor basado en memoria de código abierto. Se utiliza como base de datos en memoria, caché y middleware de mensajería. Soporta múltiples estructuras de datos abstractas como cadenas, hashes, listas, conjuntos y conjuntos ordenados.

Los comandos generales de Redis son fundamentales para interactuar con el servidor Redis, por lo que es crucial aprender los comandos comunes de Redis. A continuación, exploraremos los comandos más utilizados.

Primero, debemos entender qué son los comandos generales en Redis. Los comandos generales son aquellos que no están específicamente diseñados para tipos de datos particulares (como cadenas, listas, conjuntos, hashes o conjuntos ordenados). A continuación, aprenderemos sobre los comandos generales comunes.

1. EXISTS

EXISTS: Verifica si una clave existe.

Sintaxis:

EXISTS key [key ...]

  • Si la clave existe, devuelve 1
  • Si la clave no existe, devuelve 0
  • Puede verificar múltiples claves simultáneamente; si se verifica la misma clave varias veces, devuelve el número de verificaciones realizadas

2. DELETE

DELETE: Elimina claves específicas. Si la clave no existe, el comando se ignora.

Sintaxis:

DELETE key [key ...]

  • Puede eliminar múltiples claves simultáneamente
  • El valor devuelto es el número de claves eliminadas

3. KEYS

keys: Devuelve todas las claves que coinciden con el patrón especificado

Sintaxis:

keys pattern

Comodines:

  • *: Coincide con cualquier cantidad de caracteres arbitrarios.
  • ?: Coincide con un carácter arbitrario.
  • []: Coincide con cualquier carácter dentro de los corchetes (por ejemplo, [a-z] coincidirá con cualquier letra minúscula).
  • \x: Carácter de escape, utilizado para coincidir con caracteres especiales como * o ?.

Ejemplos:

keys redi? // coincide con claves que comienzan con 'redi' y terminan con cualquier carácter
keys *redis* // coincide con claves que contienen 'redis'
keys red[a-z]s // coincide con claves donde el carácter entre corchetes es de la a a la z
keys \*redis  // coincide con la clave llamada '*redis'

Consideraciones importantes: El comando KEYS puede ser muy lento cuando se utiliza en bases de datos grandes, ya que recorre todo el espacio de claves para encontrar coincidencias, lo que puede causar bloqueo del servidor Redis. Por lo tanto, no se recomienda su uso en entornos de producción. Si su objetivo es buscar claves específicas, considere usar el comando SCAN, que es un iterador basado en cursores y puede devolver gradualmente claves coincidentes sin bloquear el servidor.

4. SCAN

SCAN: Itera sobre el conjunto de claves en la base de datos Redis seleccionada actualmente. Permite iteración incremental, es decir, cada llamada solo devuelve unos pocos elementos y el parámetro de cursor inicial para la próxima iteración. Debido a que cada llamada no recorre todo el espacio de claves, tiene alto rendimiento y es adecuado para entornos de producción.

Sintaxis:

SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

  • cursor: Parámetro de cursor. Cuando se usa, se establece en 0 para indicar el inicio de la iteración. Cuando el cursor devuelto por este comando es 0, indica el final de la iteración.
  • Opción MATCH: Patrón de coincidencia, se pueden usar comodines para coincidencia de patrones.
  • Opción COUNT: Número esperado de elementos que esta iteración debería devolver. Esta no es una exigencia estricta, sino una sugerencia que le dice a Redis que intente devolver aproximadamente la cantidad especificada de elementos en cada llamada.
  • Opción TYPE: Requiere que SCAN solo devuelva claves que coincidan con el type dado. Por ejemplo, string, hash, etc.

Puntos clave:

  • El comando SCAN no devuelve todas las claves de una sola vez, sino que devuelve dos partes: la primera parte es el parámetro de cursor para la próxima iteración, que se usa en el próximo comando SCAN; si devuelve 0, significa que la iteración está completa; la segunda parte son las claves de esta iteración.
  • En un proceso de iteración completo, el comando SCAN garantiza devolver todos los elementos existentes desde el inicio hasta el final del conjunto.
  • Si un elemento no existía al inicio de la iteración pero fue agregado durante el proceso de iteración, o si un elemento fue eliminado durante la iteración, el comando SCAN no garantiza si devuelve este elemento.
  • Debido a que el comando SCAN tiene poca información de estado (solo el cursor), el mismo elemento podría devolverse varias veces. La aplicación debe manejar esta situación, generalmente mediante deduplicación de elementos devueltos, por ejemplo, usando un Set para almacenar las claves devueltas y asegurar que cada clave se procese solo una vez.

Ejemplos:

  • Uso básico: Iteración completada pasando el cursor devuelto cada vez como parámetro de cursor para el próximo comando SCAN.
  • Uso con opción MATCH: Durante la iteración, solo coincide con claves que conetngan key1
  • Uso con opción COUNT: El número de claves obtenidas por cada iteración del comando SCAN no es fijo. La opción COUNT es solo una sugerencia que le dice a Redis que intente iterar según esta cantidad. Por lo tanto, el número obtenido cada vez es diferente.
  • Uso con opción TYPE: Debido a que en esta base de datos solo hay claves que contienen key1 de tipo string, solo se puede iterar cuando la opción TYPE se especifica como string.

5. EXPIRE

EXPIRE: Establece tiempo de expiración (cuenta regresiva) para una clave. Después del tiempo de expiración, la clave se elimina automáticamente.

Sintaxis:

EXPIRE key seconds

  • La eliminación por expiración se realiza según segundos

Ejemplo:

Después de 10 segundos se eliminará y no será posible obtener el valor de esta clave

6. TTL

TTL: Consulta cuánto tiempo le queda a una clave antes de expirar.

Sintaxis:

TTL key

  • Si la clave no existe, devuelve -2
  • Si la clave existe pero no tiene tiempo de expiración configurado, devuelve -1
  • Si la clave existe y tiene tiempo de expiración configurado, devuelve cuánto tiempo le queda antes de expirar

Etiquetas: Redis Database cache key-value commands

Publicado el 9-6 09:40