En este laboratorio, explorarás las operaciones fundamentales de listas de Redis. Aprenderás cómo administrar y manipular datos de listas utilizando comandos como LTRIM, LINSERT, LPOP, RPOP y BLPOP.
Específicamente, practicarás recortar listas a rangos específicos con LTRIM, insertar elementos antes o después de elementos existentes usando LINSERT, eliminar elementos desde el principio y el final de las listas con LPOP y RPOP respectivamente, y bloquear hasta que un elemento esté disponible para extraer (pop) con BLPOP. Estas operaciones son esenciales para administrar eficientemente los datos almacenados en listas de Redis.
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
redis(("Redis")) -.-> redis/RedisGroup(["Redis"])
redis/RedisGroup -.-> redis/access_cli("Connect Using CLI")
redis/RedisGroup -.-> redis/add_left("Push List Left")
redis/RedisGroup -.-> redis/add_right("Push List Right")
redis/RedisGroup -.-> redis/remove_left("Pop List Left")
redis/RedisGroup -.-> redis/remove_right("Pop List Right")
subgraph Lab Skills
redis/access_cli -.-> lab-552098{{"Operaciones con Listas de Redis"}}
redis/add_left -.-> lab-552098{{"Operaciones con Listas de Redis"}}
redis/add_right -.-> lab-552098{{"Operaciones con Listas de Redis"}}
redis/remove_left -.-> lab-552098{{"Operaciones con Listas de Redis"}}
redis/remove_right -.-> lab-552098{{"Operaciones con Listas de Redis"}}
end
Recortar una Lista con LTRIM
En este paso, aprenderás cómo recortar una lista de Redis utilizando el comando LTRIM. LTRIM te permite especificar un rango de elementos dentro de una lista, eliminando efectivamente todos los elementos fuera de ese rango. Esto es útil para administrar el tamaño de la lista y enfocarse en porciones específicas de tus datos.
Primero, conéctate al servidor de Redis utilizando el comando redis-cli en tu terminal:
redis-cli
Ahora, vamos a crear una lista llamada mylist y a llenarla con algunos valores. Ejecuta el siguiente comando dentro de redis-cli:
RPUSH mylist "one" "two" "three" "four" "five"
Deberías ver la siguiente salida:
(integer) 5
Esto indica que se han añadido cinco elementos a la lista.
Ahora, usemos LTRIM para mantener solo los elementos desde el índice 1 hasta el índice 3 (inclusive). Recuerda que los índices de las listas de Redis están basados en cero. Ejecuta el siguiente comando:
LTRIM mylist 1 3
La salida será:
OK
Esto significa que la operación LTRIM fue exitosa.
Para verificar el resultado, vamos a recuperar la lista completa utilizando LRANGE. Ejecuta el siguiente comando:
LRANGE mylist 0 -1
Deberías ver la siguiente salida:
1) "two"
2) "three"
3) "four"
Como puedes ver, solo los elementos en los índices 1, 2 y 3 ("two", "three" y "four") permanecen en la lista. Los elementos "one" y "five" han sido eliminados.
Finalmente, sal del redis-cli escribiendo exit y presionando Enter. Esto asegura que tus comandos sean registrados.
exit
LTRIM es una herramienta poderosa para administrar el tamaño y el contenido de tus listas de Redis. Al especificar el rango deseado, puedes eliminar eficientemente los elementos no deseados y enfocarte en los datos que más importan.
Insertar Elementos con LINSERT
En este paso, aprenderás cómo insertar elementos en una lista de Redis utilizando el comando LINSERT. LINSERT te permite insertar un nuevo elemento ya sea antes o después de un elemento existente en la lista. Esto es útil para mantener el orden de los elementos y agregar nuevos elementos en posiciones específicas.
Continuando desde el paso anterior, deberíamos tener una lista llamada mylist con los siguientes elementos: "two", "three" y "four".
Conéctate al servidor de Redis utilizando el comando redis-cli:
redis-cli
Ahora, vamos a insertar el elemento "one" antes del elemento "two" en la lista. Usamos la opción BEFORE con LINSERT. Ejecuta el siguiente comando:
LINSERT mylist BEFORE "two" "one"
Deberías ver la siguiente salida:
(integer) 4
Esto indica que la lista ahora tiene 4 elementos.
Para verificar el resultado, vamos a recuperar la lista completa utilizando LRANGE. Ejecuta el siguiente comando:
LRANGE mylist 0 -1
Deberías ver la siguiente salida:
1) "one"
2) "two"
3) "three"
4) "four"
Como puedes ver, el elemento "one" ha sido insertado antes de "two".
A continuación, vamos a insertar el elemento "five" después del elemento "four" en la lista. Usamos la opción AFTER con LINSERT. Ejecuta el siguiente comando:
LINSERT mylist AFTER "four" "five"
La salida será:
(integer) 5
Esto significa que la operación LINSERT fue exitosa, y la lista ahora tiene 5 elementos.
Vamos a recuperar la lista completa nuevamente utilizando LRANGE. Ejecuta el siguiente comando:
LRANGE mylist 0 -1
Deberías ver la siguiente salida:
1) "one"
2) "two"
3) "three"
4) "four"
5) "five"
Como puedes ver, el elemento "five" ha sido insertado después de "four".
Finalmente, sal del redis-cli escribiendo exit y presionando Enter. Esto asegura que tus comandos sean registrados.
exit
LINSERT proporciona un control preciso sobre dónde se agregan nuevos elementos a tus listas de Redis, lo que te permite mantener el orden y la estructura deseados de tus datos.
Eliminar Elementos con LPOP y RPOP
En este paso, aprenderá cómo eliminar y recuperar elementos de una lista de Redis utilizando los comandos LPOP y RPOP. LPOP elimina y devuelve el primer elemento (el más a la izquierda) de la lista, mientras que RPOP elimina y devuelve el último elemento (el más a la derecha) de la lista. Estos comandos son útiles para implementar un comportamiento de tipo cola (queue-like) o pila (stack-like) con las listas de Redis.
Continuando desde el paso anterior, deberíamos tener una lista llamada mylist con los siguientes elementos: "one", "two", "three", "four" y "five".
Conéctese al servidor Redis utilizando el comando redis-cli:
redis-cli
Ahora, usemos `LPOP` para eliminar y recuperar el primer elemento de la lista. Ejecute el siguiente comando:
```redis
LPOP mylist
```
Debería ver la siguiente salida:
```
"one"
```
Esto indica que el elemento "one" ha sido eliminado de la lista y devuelto.
Para verificar el resultado, recuperemos los elementos restantes utilizando `LRANGE`. Ejecute el siguiente comando:
```redis
LRANGE mylist 0 -1
```
Debería ver la siguiente salida:
```
1) "two"
2) "three"
3) "four"
4) "five"
```
Como puede ver, el elemento "one" ya no está en la lista.
A continuación, usemos `RPOP` para eliminar y recuperar el último elemento de la lista. Ejecute el siguiente comando:
```redis
RPOP mylist
```
La salida será:
```
"five"
```
Esto significa que el elemento "five" ha sido eliminado de la lista y devuelto.
Recuperemos los elementos restantes nuevamente utilizando `LRANGE`. Ejecute el siguiente comando:
```redis
LRANGE mylist 0 -1
```
Debería ver la siguiente salida:
```
1) "two"
2) "three"
3) "four"
```
Como puede ver, el elemento "five" ya no está en la lista.
Finalmente, elimine la lista `mylist` y salga de `redis-cli` escribiendo `exit` y presionando Enter. Esto asegura que sus comandos queden registrados.
```redis
DEL mylist
```
```redis
exit
```
`LPOP` y `RPOP` son comandos fundamentales para administrar listas de Redis como colas (queues) o pilas (stacks). Proporcionan una forma simple y eficiente de eliminar y recuperar elementos desde cualquier extremo de la lista.
Bloquear y extraer con BLPOP
En este paso, aprenderá a usar el comando BLPOP, que es una versión bloqueante de LPOP. BLPOP permite que un cliente espere (se bloquee) hasta que un elemento esté disponible en una lista antes de intentar extraerlo (pop). Esto es particularmente útil para construir colas de mensajes o colas de tareas confiables donde los consumidores necesitan esperar a que se agreguen nuevos elementos.
Para este paso, deberá abrir dos ventanas de terminal. En ambas terminales, conéctese al servidor Redis utilizando el comando redis-cli:
redis-cli
Mantenga la primera terminal conectada a Redis. En la segunda terminal, ejecutaremos el comando de extracción bloqueante.
Primero, asegúrese de que la lista mylist se haya eliminado en los pasos anteriores. Si no es así, ejecute el siguiente comando:
DEL mylist
En la segunda terminal, ejecute el siguiente comando:
BLPOP mylist 100
Este comando se bloqueará durante un máximo de 100 segundos, esperando a que un elemento esté disponible en la lista mylist. Si no se agrega ningún elemento en 100 segundos, el comando agotará el tiempo de espera y devolverá nil.
Ahora, vuelva a la primera terminal. Agreguemos un elemento a la lista mylist. Ejecute el siguiente comando:
RPUSH mylist "hello"
Inmediatamente después de ejecutar el comando RPUSH en la primera terminal, debería ver que el comando BLPOP en la segunda terminal devuelve el siguiente resultado:
1) "mylist"
2) "hello"
Esto indica que el comando BLPOP extrajo (pop) correctamente el elemento "hello" de la lista mylist. El primer elemento de la matriz devuelta es la clave (key) de la lista, y el segundo elemento es el valor que se extrajo.
Si no agregó el elemento lo suficientemente rápido, el comando BLPOP en la segunda terminal podría haber agotado el tiempo de espera y haber devuelto nil. Si esto sucede, simplemente vuelva a ejecutar el comando BLPOP en la segunda terminal y luego agregue rápidamente un elemento a la lista en la primera terminal.
Ahora, probemos BLPOP con múltiples listas. En la segunda terminal, ejecute el siguiente comando:
BLPOP mylist anotherlist 100
Este comando se bloqueará, esperando a que un elemento esté disponible en mylist o anotherlist.
Vuelva a la primera terminal y agregue un elemento a anotherlist. Ejecute el siguiente comando:
RPUSH anotherlist "world"
Debería ver que el comando BLPOP en la segunda terminal devuelve el siguiente resultado:
1) "anotherlist"
2) "world"
Esto demuestra que BLPOP puede esperar elementos en múltiples listas y devuelve la lista de la que se extrajo el elemento.
Finalmente, salga del redis-cli en ambas terminales escribiendo exit y presionando Enter. Esto asegura que sus comandos se registren.
exit
BLPOP es un comando crucial para construir aplicaciones robustas y escalables que dependen de la comunicación asíncrona y el procesamiento de tareas. Permite a los consumidores esperar eficientemente nuevos datos sin sondear (polling) constantemente el servidor Redis.
Resumen
En este laboratorio, exploraste las operaciones fundamentales de las listas de Redis. Aprendiste cómo administrar y manipular datos de listas utilizando comandos como LTRIM, LINSERT, LPOP, RPOP y BLPOP.
Practicaste el recorte (trimming) de listas a rangos específicos con LTRIM, la inserción de elementos antes o después de elementos existentes utilizando LINSERT, la eliminación de elementos desde el principio y el final de las listas con LPOP y RPOP respectivamente, y el bloqueo hasta que un elemento esté disponible para extraer con BLPOP. Estas operaciones son esenciales para administrar eficientemente los datos almacenados en las listas de Redis.