Gestión Avanzada de Claves en Redis

RedisRedisBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, explorarás técnicas avanzadas de gestión de claves en Redis. Comenzarás aprendiendo cómo renombrar claves utilizando el comando RENAME, conectándote al servidor Redis a través de redis-cli, estableciendo un par clave-valor y luego renombrándolo, verificando el cambio a lo largo del proceso.

A continuación, descubrirás cómo mover claves entre diferentes bases de datos de Redis utilizando el comando MOVE. El laboratorio te guiará a través del proceso de transferir una clave de una base de datos a otra dentro de la instancia de Redis. El laboratorio también cubre el establecimiento y la recuperación de múltiples claves, y la iteración eficiente de claves.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") redis/RedisGroup -.-> redis/store_string("Set String Value") redis/RedisGroup -.-> redis/fetch_string("Get String Value") subgraph Lab Skills redis/access_cli -.-> lab-552094{{"Gestión Avanzada de Claves en Redis"}} redis/store_string -.-> lab-552094{{"Gestión Avanzada de Claves en Redis"}} redis/fetch_string -.-> lab-552094{{"Gestión Avanzada de Claves en Redis"}} end

Renombrar una Clave con RENAME

En este paso, aprenderás cómo renombrar una clave en Redis utilizando el comando RENAME. Renombrar claves puede ser útil por varias razones, como corregir errores tipográficos, reorganizar tus datos o actualizar los nombres de las claves para reflejar cambios en tu aplicación.

Primero, conectémonos al servidor Redis utilizando la interfaz de línea de comandos de Redis (redis-cli). Abre una terminal en tu directorio ~/project y escribe el siguiente comando:

redis-cli

Deberías ver el prompt de Redis: 127.0.0.1:6379>.

Ahora, establezcamos un par clave-valor que podamos renombrar. Utiliza el comando SET para crear una clave llamada mykey con el valor myvalue:

SET mykey myvalue

Deberías ver la salida: OK.

Para verificar que la clave se ha establecido correctamente, utiliza el comando GET:

GET mykey

Deberías ver la salida: "myvalue".

Ahora, renombramos la clave mykey a newkey utilizando el comando RENAME:

RENAME mykey newkey

Deberías ver la salida: OK.

Para verificar que la clave ha sido renombrada, intenta obtener el valor de la clave antigua (mykey):

GET mykey

Deberías ver la salida: (nil), lo que significa que la clave ya no existe.

Ahora, intenta obtener el valor de la nueva clave (newkey):

GET newkey

Deberías ver la salida: "myvalue", lo que confirma que la clave se ha renombrado correctamente.

Finalmente, renombramos la clave newkey de nuevo a mykey para los siguientes pasos:

RENAME newkey mykey

Deberías ver la salida: OK.

Verifica que la clave se haya renombrado de nuevo:

GET mykey

Deberías ver la salida: "myvalue".

Recuerda salir de redis-cli escribiendo exit o presionando Ctrl+D. Esto asegura que tus comandos se registren correctamente.

exit

Ahora has renombrado correctamente una clave en Redis utilizando el comando RENAME.

Mover una Clave Entre Bases de Datos con MOVE

En este paso, aprenderás cómo mover una clave (key) de una base de datos Redis a otra utilizando el comando MOVE. Redis soporta múltiples bases de datos lógicas dentro de una sola instancia. Por defecto, hay 16 bases de datos, numeradas del 0 al 15. El comando MOVE te permite transferir una clave (key) desde la base de datos actualmente seleccionada a otra.

Primero, asegúrate de estar conectado al servidor Redis utilizando la interfaz de línea de comandos de Redis (redis-cli). Abre una terminal en tu directorio ~/project y escribe el siguiente comando:

redis-cli

Deberías ver el prompt de Redis: 127.0.0.1:6379>. Por defecto, estás conectado a la base de datos 0.

Ya tenemos una clave (key) llamada mykey con el valor myvalue en la base de datos 0 del paso anterior. Vamos a verificar esto:

GET mykey

Deberías ver la salida: "myvalue".

Ahora, movamos la clave (key) mykey desde la base de datos 0 a la base de datos 1 utilizando el comando MOVE:

MOVE mykey 1

Deberías ver la salida: (integer) 1, lo que significa que la clave (key) se movió exitosamente.

Para verificar que la clave (key) se ha movido, intenta obtener el valor de la clave (key) mykey en la base de datos 0:

GET mykey

Deberías ver la salida: (nil), lo que significa que la clave (key) ya no existe en la base de datos 0.

Ahora, cambia a la base de datos 1 utilizando el comando SELECT:

SELECT 1

Deberías ver la salida: OK.

Ahora, intenta obtener el valor de la clave (key) mykey en la base de datos 1:

GET mykey

Deberías ver la salida: "myvalue", lo que confirma que la clave (key) se ha movido exitosamente a la base de datos 1.

Finalmente, movamos la clave (key) mykey de vuelta a la base de datos 0 para los siguientes pasos. Primero, regresa a la base de datos 0:

SELECT 0

Deberías ver la salida: OK.

Ahora, mueve la clave (key) mykey desde la base de datos 1 a la base de datos 0:

MOVE mykey 0

Deberías ver la salida: (error) ERR source and destination objects are the same.

Este error ocurre porque ejecutas SELECT 0 y luego MOVE mykey 0 en la misma sesión. El comando MOVE no está permitido para mover una clave (key) a la misma base de datos en la que se encuentra actualmente.

Para mover una clave (key) a una base de datos diferente, necesitas seleccionar la base de datos de destino primero y luego usar el comando MOVE.

Por ejemplo, primero selecciona la base de datos 1:

SELECT 1

Deberías ver la salida: OK.

Ahora, mueve la clave (key) mykey desde la base de datos 0 a la base de datos 1:

MOVE mykey 1

Deberías ver la salida: (integer) 1, lo que significa que la clave (key) se movió exitosamente.

Ahora, regresa a la base de datos 0:

SELECT 0

Verifica que la clave (key) esté de vuelta en la base de datos 0:

GET mykey

Deberías ver la salida: "myvalue".

Recuerda salir del redis-cli escribiendo exit o presionando Ctrl+D. Esto asegura que tus comandos se registren correctamente.

exit

Ahora has movido exitosamente una clave (key) entre bases de datos Redis utilizando el comando MOVE.

Establecer Múltiples Claves con MSET

En este paso, aprenderás cómo establecer múltiples claves con sus valores correspondientes en un solo comando utilizando el comando MSET en Redis. Esto es más eficiente que usar múltiples comandos SET, ya que reduce el número de viajes de ida y vuelta (round trips) al servidor Redis.

Primero, asegúrate de estar conectado al servidor Redis utilizando la interfaz de línea de comandos de Redis (redis-cli). Si aún no estás conectado, abre una terminal en tu directorio ~/project y escribe el siguiente comando:

redis-cli

Deberías ver el prompt de Redis: 127.0.0.1:6379>.

Ya tenemos una clave llamada mykey con el valor myvalue en la base de datos 0 de los pasos anteriores. Ahora, establezcamos dos claves más, key1 y key2, con los valores value1 y value2 respectivamente, utilizando el comando MSET:

MSET key1 value1 key2 value2

Deberías ver la salida: OK, lo que significa que las claves se establecieron correctamente.

Para verificar que las claves se han establecido correctamente, utiliza el comando GET para cada clave:

GET key1

Deberías ver la salida: "value1".

GET key2

Deberías ver la salida: "value2".

Ahora, establezcamos tres claves, incluyendo mykey, utilizando MSET:

MSET mykey newvalue key3 value3 key4 value4

Deberías ver la salida: OK.

Verifica los valores:

GET mykey

Deberías ver la salida: "newvalue".

GET key3

Deberías ver la salida: "value3".

GET key4

Deberías ver la salida: "value4".

Recuerda salir de redis-cli escribiendo exit o presionando Ctrl+D. Esto asegura que tus comandos se registren correctamente.

exit

Ahora has establecido correctamente múltiples claves con el comando MSET.

Recuperar Múltiples Claves con MGET

En este paso, aprenderás cómo recuperar los valores de múltiples claves en un solo comando utilizando el comando MGET en Redis. Esto es más eficiente que usar múltiples comandos GET, ya que reduce el número de viajes de ida y vuelta (round trips) al servidor Redis.

Primero, asegúrate de estar conectado al servidor Redis utilizando la interfaz de línea de comandos de Redis (redis-cli). Abre una terminal en tu directorio ~/project y escribe el siguiente comando:

redis-cli

Deberías ver el prompt de Redis: 127.0.0.1:6379>.

Del paso anterior, tenemos las siguientes claves y valores:

  • mykey: newvalue
  • key1: value1
  • key2: value2
  • key3: value3
  • key4: value4

Ahora, recuperemos los valores de key1, key2 y mykey utilizando el comando MGET:

MGET key1 key2 mykey

Deberías ver la salida:

1) "value1"
2) "value2"
3) "newvalue"

Esta salida muestra los valores de las claves en el orden en que se especificaron en el comando MGET.

Ahora, recuperemos los valores de key3, key4 y una clave inexistente key5 utilizando el comando MGET:

MGET key3 key4 key5

Deberías ver la salida:

1) "value3"
2) "value4"
3) (nil)

Observa que el valor para la clave inexistente key5 es (nil).

Recuerda salir de redis-cli escribiendo exit o presionando Ctrl+D. Esto asegura que tus comandos se registren correctamente.

exit

Ahora has recuperado correctamente múltiples claves con el comando MGET.

Iterar Claves Eficientemente con SCAN

En este paso, aprenderá cómo iterar a través de las claves en Redis de manera eficiente utilizando el comando SCAN. A diferencia del comando KEYS, que puede bloquear el servidor cuando se usa en bases de datos grandes, SCAN es un iterador basado en cursor que recupera las claves en lotes, minimizando el impacto en el rendimiento.

Primero, asegúrese de estar conectado al servidor Redis utilizando la interfaz de línea de comandos de Redis (redis-cli). Abra una terminal en su directorio ~/project y escriba el siguiente comando:

redis-cli

Debería ver el prompt de Redis: 127.0.0.1:6379>.

De los pasos anteriores, tenemos las siguientes claves:

  • mykey
  • key1
  • key2
  • key3
  • key4

El comando SCAN requiere un valor de cursor inicial, que normalmente es 0. Devuelve un nuevo valor de cursor para la siguiente iteración y una lista de claves encontradas en la iteración actual.

Comencemos la iteración con un cursor de 0:

SCAN 0

Debería ver una salida similar a esta:

1) "0"
2) 1) "key2"
   2) "key3"
   3) "key4"
   4) "key1"
   5) "mykey"

El primer elemento en la salida ("0") es el valor del cursor. El segundo elemento es un array de claves encontradas en esta iteración. Dado que el cursor devuelto es 0, esto indica que la iteración está completa y hemos recuperado todas las claves en un solo escaneo (scan).

También puede usar la opción MATCH para filtrar las claves según un patrón. Por ejemplo, para encontrar todas las claves que comienzan con key, use el siguiente comando:

SCAN 0 MATCH key*

Debería ver una salida similar a esta:

1) "0"
2) 1) "key2"
   2) "key3"
   3) "key4"
   4) "key1"

El cursor es "0", lo que significa que la iteración está completa, y podemos ver que solo se devuelven las claves que coinciden con nuestro patrón "key*" (excluyendo "mykey").

También puede usar la opción COUNT para sugerir a Redis la cantidad de elementos que le gustaría recuperar en una sola llamada. Tenga en cuenta que esto es solo una sugerencia, y Redis puede devolver más o menos elementos. Por ejemplo:

SCAN 0 COUNT 3

Debería ver una salida similar a esta:

1) "6"
2) 1) "key2"
   2) "key3"
   3) "key4"

En este caso, obtenemos un nuevo valor de cursor de "6", lo que indica que hay más claves para escanear. Continuaría la iteración utilizando este nuevo valor de cursor hasta que reciba un cursor de "0".

Recuerde salir de redis-cli escribiendo exit o presionando Ctrl+D. Esto asegura que sus comandos se registren correctamente.

exit

Ahora ha iterado con éxito a través de las claves en Redis utilizando el comando SCAN.

Resumen

En este laboratorio, aprendiste cómo realizar operaciones avanzadas de gestión de claves en Redis. Específicamente, utilizaste el comando RENAME para renombrar una clave, cambiando su identificador mientras conservabas su valor asociado. También practicaste la verificación del cambio de nombre exitoso recuperando el valor utilizando tanto los nombres de clave antiguos como los nuevos, confirmando la existencia y el valor de la clave después de la operación. Finalmente, volviste a renombrar la clave a su nombre original para los pasos posteriores.

El laboratorio también introdujo el concepto de bases de datos de Redis y el comando MOVE, que te permite transferir claves entre estas bases de datos lógicas dentro de una sola instancia de Redis. Aprendiste cómo usar el comando MSET para establecer eficientemente múltiples claves a la vez y el comando MGET para recuperar sus valores. Finalmente, exploraste el comando SCAN, una herramienta poderosa para iterar a través de las claves en bases de datos grandes sin bloquear el servidor. Recuerda siempre salir de redis-cli después de cada paso para asegurar que tus comandos se registren para su verificación.