Gestión avanzada de claves en Redis

RedisBeginner
Practicar Ahora

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 durante el 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 transferencia de una clave de una base de datos a otra dentro de la instancia de Redis. También cubriremos cómo establecer y recuperar múltiples claves, así como la iteración eficiente de las mismas.

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 diversas razones, como corregir errores tipográficos, reorganizar tus datos o actualizar nombres de 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. Usa 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, usa el comando GET:

GET mykey

Deberías ver la salida: "myvalue".

Ahora, renombremos la clave mykey a newkey usando 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 ha sido renombrada exitosamente.

Finalmente, renombremos la clave newkey de vuelta a mykey para los siguientes pasos:

RENAME newkey mykey

Deberías ver la salida: OK.

Verifica que la clave haya vuelto a su nombre original:

GET mykey

Deberías ver la salida: "myvalue".

Sal de redis-cli escribiendo exit o presionando Ctrl+D.

exit

Ahora has renombrado exitosamente 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 de una base de datos de Redis a otra utilizando el comando MOVE. Redis admite 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 de la base de datos seleccionada actualmente 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 llamada mykey con el valor myvalue en la base de datos 0 desde el paso anterior. Verifiquemos esto:

GET mykey

Deberías ver la salida: "myvalue".

Ahora, movamos la clave mykey de la base de datos 0 a la base de datos 1 usando el comando MOVE:

MOVE mykey 1

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

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

GET mykey

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

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

SELECT 1

Deberías ver la salida: OK.

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

GET mykey

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

Finalmente, movamos la clave mykey de vuelta a la base de datos 0 para los siguientes pasos. Primero, vuelve a la base de datos 0:

SELECT 0

Deberías ver la salida: OK.

Ahora, mueve la clave mykey de 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 seleccionaste SELECT 0 y luego intentaste MOVE mykey 0 en la misma sesión. El comando MOVE no permite mover una clave a la misma base de datos en la que se encuentra actualmente.

Para mover una clave a una base de datos diferente, primero debes seleccionar la base de datos de destino 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 mykey de la base de datos 1 a la base de datos 0:

MOVE mykey 0

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

Ahora, vuelve a la base de datos 0:

SELECT 0

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

GET mykey

Deberías ver la salida: "myvalue".

Sal de redis-cli escribiendo exit o presionando Ctrl+D.

exit

Ahora has movido exitosamente una clave entre bases de datos de 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 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 desde los pasos anteriores. Ahora, establezcamos dos claves más, key1 y key2, con los valores value1 y value2 respectivamente, usando el comando MSET:

MSET key1 value1 key2 value2

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

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

GET key1

Deberías ver la salida: "value1".

GET key2

Deberías ver la salida: "value2".

Ahora, establezcamos tres claves, incluyendo mykey, usando 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".

Sal de redis-cli escribiendo exit o presionando Ctrl+D.

exit

Ahora has establecido exitosamente 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 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>.

Desde el 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 usando 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 usando 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).

Sal de redis-cli escribiendo exit o presionando Ctrl+D.

exit

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

Iterar claves eficientemente con SCAN

En este paso, aprenderás 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 claves en lotes, minimizando el impacto en el rendimiento.

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>.

Desde 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ías 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 una matriz 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.

También puedes usar la opción MATCH para filtrar claves basadas en un patrón. Por ejemplo, para encontrar todas las claves que comienzan con key, usa el siguiente comando:

SCAN 0 MATCH key*

Deberías 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 puedes usar la opción COUNT para sugerir a Redis el número de elementos que te gustaría recuperar en una sola llamada. Ten en cuenta que esto es solo una sugerencia, y Redis puede devolver más o menos elementos. Por ejemplo:

SCAN 0 COUNT 3

Deberías 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 por escanear. Continuarías la iteración usando este nuevo valor de cursor hasta que recibas un cursor de "0".

Sal de redis-cli escribiendo exit o presionando Ctrl+D.

exit

Ahora has iterado exitosamente 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 renombrado exitoso recuperando el valor usando tanto el nombre de clave antiguo como el nuevo, confirmando la existencia y el valor de la clave después de la operación. Finalmente, renombraste la clave de vuelta a su nombre original para los pasos subsiguientes.

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 múltiples claves de manera eficiente 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 claves en bases de datos grandes sin bloquear el servidor.