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.


