Gestión básica de datos en Redis

RedisBeginner
Practicar Ahora

Introducción

En este laboratorio, explorarás las técnicas fundamentales de gestión de datos en Redis. Comenzarás aprendiendo a incrementar y decrementar valores numéricos mediante los comandos atómicos INCR y DECR, los cuales son ideales para implementar contadores y limitadores de tasa (rate limiters). Te conectarás al servidor Redis usando redis-cli, establecerás valores iniciales, realizarás operaciones de incremento y decremento, y verificarás los resultados con el comando GET.

Además, aprenderás a recuperar todas las claves almacenadas en Redis utilizando el comando KEYS.

Incrementar y decrementar valores con INCR/DECR

En este paso, aprenderás a incrementar y decrementar valores numéricos almacenados en Redis usando los comandos INCR y DECR. Estos comandos son atómicos, lo que significa que su ejecución está garantizada sin interferencias de otros clientes, haciéndolos perfectos para tareas como contadores y limitadores de tasa.

Primero, conectémonos al servidor Redis usando el comando redis-cli en la terminal:

redis-cli

Ahora, establezcamos una clave llamada mycounter con un valor inicial de 10. Esto crea un par clave-valor en la base de datos de Redis, donde la clave es mycounter y el valor es 10.

SET mycounter 10

Deberías ver la siguiente salida, confirmando que la clave se ha establecido correctamente:

OK

El comando INCR incrementa el valor de una clave en 1. Incrementemos mycounter:

INCR mycounter

La salida mostrará el valor incrementado:

(integer) 11

Para verificar el valor, puedes usar el comando GET:

GET mycounter

La salida debería ser:

"11"

El comando DECR decrementa el valor de una clave en 1. Decrementemos mycounter:

DECR mycounter

La salida mostrará el valor decrementado:

(integer) 10

Nuevamente, verifica el valor con GET:

GET mycounter

La salida debería ser:

"10"

Si una clave no existe, INCR y DECR la tratan como si contuviera el valor 0. Intentemos incrementar una clave inexistente llamada newcounter:

INCR newcounter

La salida será:

(integer) 1

Ahora, verifica el valor de newcounter:

GET newcounter

La salida debería ser:

"1"

De manera similar, decrementar una clave inexistente la tratará como 0 y la decrementará a -1.

DECR anothercounter

La salida será:

(integer) -1
GET anothercounter

La salida debería ser:

"-1"

Finalmente, sal del redis-cli:

exit

Es importante salir de redis-cli después de completar los comandos para que el historial de comandos se registre correctamente.

Recuperar todas las claves con KEYS

En este paso, aprenderás a recuperar todas las claves almacenadas en Redis usando el comando KEYS. Aunque KEYS es útil para el desarrollo y la depuración, generalmente no se recomienda para entornos de producción con grandes conjuntos de datos, ya que puede bloquear el servidor mientras itera sobre todas las claves.

Primero, conéctate al servidor Redis usando redis-cli:

redis-cli

En el paso anterior, creaste varias claves: mycounter, newcounter y anothercounter. Añadamos algunas claves más para hacer el ejemplo más interesante.

SET user:1000:name "John"
SET user:1000:age 30
SET user:1001:name "Jane"

Ahora, usa el comando KEYS con el patrón * para recuperar todas las claves en la base de datos:

KEYS *

La salida será una lista de todas las claves:

1) "anothercounter"
2) "user:1000:age"
3) "user:1001:name"
4) "mycounter"
5) "newcounter"
6) "user:1000:name"

El orden de las claves puede variar.

También puedes usar patrones para recuperar claves que coincidan con un formato específico. Por ejemplo, para recuperar todas las claves que comienzan con user:, usa el siguiente comando:

KEYS user:*

La salida será:

1) "user:1000:age"
2) "user:1001:name"
3) "user:1000:name"

Otro ejemplo: para recuperar todas las claves que contienen counter, usa el siguiente comando:

KEYS *counter*

La salida será:

1) "anothercounter"
2) "mycounter"
3) "newcounter"

Recuerda que usar KEYS * en una base de datos grande puede afectar el rendimiento. Para entornos de producción, considera usar SCAN en su lugar, que itera a través del espacio de claves de manera no bloqueante.

Finalmente, sal del redis-cli:

exit

Verificar el tipo de datos con TYPE

En este paso, aprenderás a verificar el tipo de datos de una clave almacenada en Redis usando el comando TYPE. Redis admite varios tipos de datos, incluyendo cadenas (strings), listas, conjuntos (sets), conjuntos ordenados (sorted sets) y hashes. Comprender el tipo de datos de una clave es crucial para realizar las operaciones adecuadas sobre ella.

Primero, conéctate al servidor Redis usando redis-cli:

redis-cli

En los pasos anteriores, creaste varias claves con diferentes valores. Verifiquemos sus tipos de datos.

Primero, verifiquemos el tipo de datos de la clave mycounter:

TYPE mycounter

La salida será:

string

Esto indica que mycounter se almacena como una cadena, aunque contenga un valor numérico. Redis convierte automáticamente los valores numéricos a cadenas cuando se usa SET.

A continuación, verifiquemos el tipo de datos de la clave user:1000:name:

TYPE user:1000:name

La salida será:

string

Esto también indica que user:1000:name se almacena como una cadena.

Ahora, verifiquemos el tipo de datos de una clave que no existe, como nonexistentkey:

TYPE nonexistentkey

La salida será:

none

Esto indica que la clave no existe en la base de datos.

Para ilustrar mejor los tipos de datos, creemos una lista:

LPUSH mylist "item1"
LPUSH mylist "item2"

Ahora, verifica el tipo de datos de mylist:

TYPE mylist

La salida será:

list

Esto confirma que mylist se almacena como una lista.

De manera similar, puedes crear otros tipos de datos como conjuntos, conjuntos ordenados y hashes, y usar el comando TYPE para verificar sus tipos. Por ejemplo:

SADD myset "member1"
SADD myset "member2"
TYPE myset

La salida será:

set
ZADD mysortedset 1 "element1"
ZADD mysortedset 2 "element2"
TYPE mysortedset

La salida será:

zset
HSET myhash field1 "value1"
HSET myhash field2 "value2"
TYPE myhash

La salida será:

hash

Finalmente, sal del redis-cli:

exit

Limpiar datos con FLUSHDB

En este paso, aprenderás a borrar todos los datos de la base de datos de Redis seleccionada actualmente usando el comando FLUSHDB. Este comando es útil para restablecer la base de datos durante el desarrollo o las pruebas. Usa este comando con precaución en entornos de producción, ya que eliminará permanentemente todos los datos de la base de datos.

Primero, conéctate al servidor Redis usando redis-cli:

redis-cli

Antes de limpiar la base de datos, verifiquemos que hay claves presentes. Usa el comando KEYS *:

KEYS *

Deberías ver una lista de las claves que creaste en los pasos anteriores, como mycounter, newcounter, user:1000:name y mylist.

Ahora, ejecuta el comando FLUSHDB:

FLUSHDB

La salida será:

OK

Esto indica que la base de datos se ha limpiado correctamente.

Para verificar que la base de datos ahora está vacía, usa el comando KEYS * nuevamente:

KEYS *

La salida será una lista vacía:

(empty array)

Esto confirma que todas las claves han sido eliminadas de la base de datos.

Es importante entender que FLUSHDB solo limpia la base de datos seleccionada actualmente. Redis admite múltiples bases de datos (numeradas del 0 al 15 por defecto). Si deseas limpiar todas las bases de datos, puedes usar el comando FLUSHALL. Sin embargo, no usaremos FLUSHALL en este laboratorio para evitar la pérdida accidental de datos.

Finalmente, sal del redis-cli:

exit

Resumen

En este laboratorio, aprendiste técnicas fundamentales de gestión de datos en Redis. Específicamente, practicaste cómo incrementar y decrementar valores numéricos usando los comandos atómicos INCR y DECR, los cuales son útiles para implementar contadores y limitadores de tasa. También aprendiste que si una clave no existe, estos comandos la tratan como si contuviera el valor 0.

Además, conociste el comando KEYS para recuperar todas las claves almacenadas en Redis. Aunque es útil para el desarrollo y la depuración, generalmente no se recomienda para entornos de producción con grandes volúmenes de datos. Finalmente, aprendiste a verificar tipos de datos y a limpiar la base de datos.