Introducción a las estructuras de datos de Redis

RedisBeginner
Practicar Ahora

Introducción

En este laboratorio, explorarás las estructuras de datos fundamentales de Redis y cómo interactuar con ellas mediante la herramienta de línea de comandos redis-cli. El laboratorio se centra en ejercicios prácticos para ayudarte a comprender cómo almacenar y recuperar datos en Redis.

Comenzarás trabajando con Strings (cadenas), aprendiendo a establecer, obtener, verificar la existencia y eliminar valores de cadena. Luego, pasarás a las Lists (listas), utilizando comandos como LPUSH y LRANGE. A continuación, gestionarás Sets (conjuntos) con SADD y SMEMBERS. Finalmente, explorarás los Hashes utilizando HSET y HGET. Esta experiencia práctica te proporcionará una base sólida para utilizar Redis en diversas aplicaciones.

Trabajar con Strings para datos simples

En este paso, exploraremos cómo utilizar Redis para almacenar y recuperar datos de cadena simples. Redis se utiliza a menudo como caché o como un almacén simple de clave-valor, y las cadenas son el tipo de datos más básico que ofrece.

Primero, conectémonos al servidor de Redis utilizando la herramienta de línea de comandos redis-cli. Abre una terminal en la máquina virtual de LabEx. Deberías estar ya en el directorio ~/project.

Escribe el siguiente comando para conectarte al servidor de Redis:

redis-cli

Deberías ver un prompt que se ve así:

127.0.0.1:6379>

Esto indica que ahora estás conectado al servidor de Redis.

Ahora, establezcamos un valor de cadena simple. Usaremos el comando SET. El comando SET toma dos argumentos: la clave y el valor. Vamos a establecer una clave llamada mykey con el valor Hello Redis:

SET mykey "Hello Redis"

Deberías ver la siguiente salida:

OK

Esto significa que el valor se ha establecido correctamente.

Ahora, recuperemos el valor utilizando el comando GET. El comando GET toma un argumento: la clave. Recuperemos el valor de mykey:

GET mykey

Deberías ver la siguiente salida:

"Hello Redis"

Esto confirma que hemos almacenado y recuperado con éxito un valor de cadena en Redis.

Probemos con otro ejemplo. Esta vez, almacenemos un número como una cadena.

SET counter 100
GET counter

Deberías ver:

"100"

Redis trata esto como una cadena, aunque represente un número.

También puedes usar el comando EXISTS para verificar si una clave existe.

EXISTS mykey

Deberías ver:

(integer) 1

Esto indica que la clave mykey existe. Si la clave no existe, el comando devolverá (integer) 0.

Finalmente, eliminemos la clave usando el comando DEL.

DEL mykey

Deberías ver:

(integer) 1

Esto indica que la clave mykey ha sido eliminada correctamente.

Ahora, si intentas obtener el valor de mykey de nuevo:

GET mykey

Deberías ver:

(nil)

Esto confirma que la clave ha sido eliminada.

Recuerda salir de redis-cli para asegurarte de que tus comandos queden registrados. Escribe:

exit

Esto te devolverá al prompt normal de la terminal.

Usar Lists con LPUSH y LRANGE

En este paso, exploraremos cómo utilizar las listas de Redis para almacenar y recuperar colecciones ordenadas de datos. Las listas de Redis se implementan como listas enlazadas, lo que las hace eficientes para añadir y eliminar elementos desde el principio o el final de la lista. Nos centraremos en los comandos LPUSH y LRANGE.

Seguiremos utilizando la herramienta de línea de comandos redis-cli. Si aún no estás conectado, abre una terminal en la máquina virtual de LabEx y escribe:

redis-cli

Ahora, creemos una lista y añadamos algunos elementos usando el comando LPUSH. LPUSH añade elementos a la izquierda (al principio) de la lista. El comando LPUSH toma dos o más argumentos: la clave de la lista y el valor o valores a añadir. Creemos una lista llamada mylist y añadamos los valores item1, item2 e item3:

LPUSH mylist item1

Deberías ver la siguiente salida:

(integer) 1

Esto significa que se ha añadido un elemento a la lista. El valor de retorno de LPUSH es la longitud de la lista después de la operación.

Ahora, añadamos los otros elementos:

LPUSH mylist item2
(integer) 2
LPUSH mylist item3
(integer) 3

Ahora, recuperemos los elementos de la lista usando el comando LRANGE. LRANGE devuelve un rango de elementos de la lista. El comando LRANGE toma tres argumentos: la clave de la lista, el índice inicial y el índice final. Los índices comienzan en cero, por lo que el primer elemento está en el índice 0. Para recuperar todos los elementos de la lista, podemos usar el índice inicial 0 y el índice final -1.

LRANGE mylist 0 -1

Deberías ver la siguiente salida:

1) "item3"
2) "item2"
3) "item1"

Observa que los elementos se devuelven en el orden inverso al que los añadimos, porque LPUSH añade elementos al principio de la lista.

Añadamos algunos elementos más a la lista:

LPUSH mylist item4
LPUSH mylist item5

Ahora, recuperemos los primeros 3 elementos de la lista (índices 0 a 2):

LRANGE mylist 0 2

Deberías ver:

1) "item5"
2) "item4"
3) "item3"

También puedes usar índices negativos para acceder a elementos desde el final de la lista. Por ejemplo, para recuperar el último elemento de la lista, puedes usar el índice -1:

LRANGE mylist -1 -1

Deberías ver:

1) "item1"

Recuerda salir de redis-cli para asegurarte de que tus comandos queden registrados. Escribe:

exit

Esto te devolverá al prompt normal de la terminal.

Gestionar Sets con SADD y SMEMBERS

En este paso, exploraremos cómo utilizar los conjuntos (Sets) de Redis para almacenar y gestionar colecciones no ordenadas de elementos únicos. Los conjuntos de Redis son útiles para tareas como rastrear visitantes únicos, almacenar etiquetas o gestionar relaciones entre objetos. Nos centraremos en los comandos SADD y SMEMBERS.

Seguiremos utilizando la herramienta de línea de comandos redis-cli. Si aún no estás conectado, abre una terminal en la máquina virtual de LabEx y escribe:

redis-cli

Ahora, creemos un conjunto y añadamos algunos miembros usando el comando SADD. SADD añade uno o más miembros a un conjunto. El comando SADD toma dos o más argumentos: la clave del conjunto y el miembro o miembros a añadir. Creemos un conjunto llamado myset y añadamos los miembros member1, member2 y member3:

SADD myset member1

Deberías ver la siguiente salida:

(integer) 1

Esto significa que se ha añadido un miembro al conjunto. El valor de retorno de SADD es el número de miembros que se añadieron al conjunto (excluyendo los miembros que ya estaban presentes).

Ahora, añadamos los otros elementos:

SADD myset member2
(integer) 1
SADD myset member3
(integer) 1

Ahora, recuperemos los miembros del conjunto usando el comando SMEMBERS. SMEMBERS devuelve todos los miembros del conjunto. El comando SMEMBERS toma un argumento: la clave del conjunto.

SMEMBERS myset

Deberías ver la siguiente salida (el orden de los miembros puede variar, ya que los conjuntos no están ordenados):

1) "member3"
2) "member2"
3) "member1"

Intentemos añadir un miembro duplicado al conjunto:

SADD myset member1

Deberías ver:

(integer) 0

Esto indica que no se añadieron nuevos miembros, porque member1 ya estaba en el conjunto.

Añadamos algunos miembros más al conjunto:

SADD myset member4
SADD myset member5

Ahora, recuperemos todos los miembros de nuevo:

SMEMBERS myset

Deberías ver algo como:

1) "member5"
2) "member4"
3) "member3"
4) "member2"
5) "member1"

El orden puede ser diferente.

Recuerda salir de redis-cli para asegurarte de que tus comandos queden registrados. Escribe:

exit

Esto te devolverá al prompt normal de la terminal.

Explorar Hashes con HSET y HGET

En este paso, exploraremos cómo utilizar los hashes de Redis para almacenar y recuperar colecciones de pares campo-valor. Los hashes de Redis son útiles para representar objetos con múltiples atributos. Nos centraremos en los comandos HSET y HGET.

Seguiremos utilizando la herramienta de línea de comandos redis-cli. Si aún no estás conectado, abre una terminal en la máquina virtual de LabEx y escribe:

redis-cli

Ahora, creemos un hash y añadamos algunos campos y valores usando el comando HSET. HSET establece el valor de un campo en un hash. El comando HSET toma tres argumentos: la clave del hash, el campo y el valor. Creemos un hash llamado myhash y establezcamos el campo field1 con el valor value1:

HSET myhash field1 value1

Deberías ver la siguiente salida:

(integer) 1

Esto significa que se ha añadido un nuevo campo al hash. El valor de retorno de HSET es 1 si el campo es nuevo en el hash y 0 si el campo ya existía y el valor fue actualizado.

Ahora, añadamos otro campo:

HSET myhash field2 value2
(integer) 1

Ahora, recuperemos el valor de un campo usando el comando HGET. HGET obtiene el valor de un campo en un hash. El comando HGET toma dos argumentos: la clave del hash y el campo. Recuperemos el valor de field1 en myhash:

HGET myhash field1

Deberías ver la siguiente salida:

"value1"

Esto confirma que hemos almacenado y recuperado con éxito un par campo-valor en el hash.

Intentemos actualizar el valor de un campo existente:

HSET myhash field1 newvalue1

Deberías ver:

(integer) 0

Esto indica que el campo ya existía y su valor fue actualizado.

Ahora, recuperemos el valor de field1 de nuevo:

HGET myhash field1

Deberías ver:

"newvalue1"

Esto confirma que el valor ha sido actualizado.

Añadamos algunos campos más al hash:

HSET myhash field3 value3
HSET myhash field4 value4

Recuerda salir de redis-cli para asegurarte de que tus comandos queden registrados. Escribe:

exit

Esto te devolverá al prompt normal de la terminal.

Resumen

En este laboratorio, exploramos las estructuras de datos fundamentales de Redis, comenzando por las cadenas (strings). Aprendimos a conectarnos a un servidor de Redis usando redis-cli y luego utilizamos el comando SET para almacenar valores de cadena asociados a claves. Posteriormente, recuperamos estos valores usando el comando GET. También vimos cómo Redis trata los números almacenados como cadenas.

Además, aprendimos a crear y manipular listas (Lists) usando LPUSH y LRANGE, a gestionar conjuntos (Sets) con SADD y SMEMBERS, y a explorar hashes usando HSET y HGET. Estos comandos te permiten almacenar y recuperar diferentes tipos de datos en Redis, convirtiéndolo en una herramienta versátil para diversas aplicaciones. Recuerda salir de redis-cli después de cada paso para asegurarte de que tus comandos queden registrados para su verificación.