Introducción
En este laboratorio, explorarás el sistema de mensajería Pub/Sub (Publicación/Suscripción) de Redis. Aprenderás a suscribirte a canales, publicar mensajes y cancelar suscripciones. Este laboratorio te guiará a través de las operaciones fundamentales utilizando los comandos SUBSCRIBE, PUBLISH, UNSUBSCRIBE y PSUBSCRIBE.
Suscribirse a un canal con SUBSCRIBE
En este paso, aprenderás cómo suscribirte a un canal en Redis utilizando el comando SUBSCRIBE. Suscribirte a un canal te permite recibir los mensajes que se publiquen en él. Este es un concepto fundamental en el sistema de mensajería Pub/Sub de Redis.
Terminal 1: Suscribirse al canal
Abre tu primera terminal (la llamaremos Terminal 1). Puedes utilizar la terminal Xfce proporcionada en el entorno de LabEx.
Conéctate al servidor de Redis usando el comando redis-cli:
redis-cli
Deberías ver el indicador (prompt) de Redis: 127.0.0.1:6379>.
Suscríbete a un canal llamado mychannel usando el comando SUBSCRIBE:
SUBSCRIBE mychannel
La salida será similar a esta:
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
Analicemos la salida:
"subscribe": Indica que te has suscrito exitosamente a un canal."mychannel": Es el nombre del canal al que te suscribiste.(integer) 1: Es la cantidad de canales a los que estás suscrito actualmente.
Importante: Mantén la Terminal 1 abierta con la sesión de
redis-cliactiva y suscrita al canal. NO cierres esta terminal ni presionesCtrl+C, ya que esto cancelaría tu suscripción al canal. Usaremos una segunda terminal para publicar mensajes en el siguiente paso.
Publicar mensajes con PUBLISH
En este paso, aprenderás a publicar mensajes en un canal de Redis utilizando el comando PUBLISH. La publicación de mensajes es la funcionalidad principal del sistema Pub/Sub, permitiéndote enviar datos a todos los suscriptores de un canal específico.
Terminal 2: Publicar mensajes
Abre una segunda terminal (la llamaremos Terminal 2). Puedes abrir una nueva pestaña en tu terminal Xfce.
Conéctate al servidor de Redis usando el comando redis-cli:
redis-cli
Deberías ver el indicador (prompt) de Redis: 127.0.0.1:6379>.
Ahora, publica un mensaje en el canal mychannel usando el comando PUBLISH:
PUBLISH mychannel "Hello, Redis!"
La salida en la Terminal 2 mostrará el número de clientes que recibieron el mensaje:
(integer) 1
En este caso, la salida es (integer) 1 porque tienes una suscripción activa a mychannel en la Terminal 1 desde el paso anterior.
Observar el mensaje en la Terminal 1
Ahora regresa a la Terminal 1 (donde te suscribiste a mychannel en el Paso 1). Deberías ver el mensaje que acabas de publicar mostrado en tiempo real:
1) "message"
2) "mychannel"
3) "Hello, Redis!"
Esto muestra lo siguiente:
"message": Indica que se trata de un mensaje publicado."mychannel": El canal en el cual se publicó el mensaje."Hello, Redis!": El contenido real del mensaje.
Probar la mensajería en tiempo real
Ahora puedes experimentar con la mensajería en tiempo real:
- Vuelve a la Terminal 2 y publica más mensajes.
- Cambia a la Terminal 1 para ver cómo aparecen al instante.
- Prueba a publicar diferentes mensajes para observar la comunicación en directo.
Ejemplo - en la Terminal 2:
PUBLISH mychannel "This is message 2"
PUBLISH mychannel "Real-time messaging works!"
Importante: Mantén tanto la Terminal 1 como la Terminal 2 con sus sesiones de
redis-cliactivas. Continuaremos usando ambas terminales en los siguientes pasos.
Cancelar suscripción con UNSUBSCRIBE
En este paso, aprenderás a cancelar la suscripción a un canal en Redis utilizando el comando UNSUBSCRIBE. Cancelar la suscripción elimina a un cliente de la lista de suscriptores de un canal específico, evitando que reciba más mensajes publicados en dicho canal.
Terminal 1: Salir del modo de suscripción
Dirígete a la Terminal 1 (donde actualmente estás suscrito a mychannel). Deberías ver el estado de suscripción indicando "Reading messages... (press Ctrl-C to quit)".
Dado que la Terminal 1 se encuentra en modo de suscripción, no puedes ejecutar comandos habituales de Redis directamente. Para cancelar la suscripción, primero debes salir del modo de suscripción:
Presiona
Ctrl+Cpara salir del modo de suscripción.Deberías notar que la sesión de
redis-clifinaliza y regresa al indicador de la terminal.Vuelve a conectarte a Redis:
redis-cliAhora puedes ejecutar el comando
UNSUBSCRIBE(aunque no es estrictamente necesario, ya que desconectarse te desuscribe automáticamente):UNSUBSCRIBE mychannel
Nota: Al presionar Ctrl+C, en realidad ya te habías desconectado de todas las suscripciones. El comando UNSUBSCRIBE se muestra con fines demostrativos, pero en la práctica, desconectarse te desuscribe automáticamente de todos los canales.
La salida en la Terminal 1 se verá así:
1) "unsubscribe"
2) "mychannel"
3) (integer) 0
Analicemos la salida:
"unsubscribe": Indica que has cancelado tu suscripción a un canal."mychannel": Es el nombre del canal del cual te desuscribiste.(integer) 0: Es la cantidad de canales a los que estás suscrito actualmente. Ahora es 0 porque te desuscribiste demychannel.
Terminal 2: Probar la publicación después de cancelar la suscripción
Ahora cambia a la Terminal 2 y publica otro mensaje en mychannel:
PUBLISH mychannel "Is anyone still there?"
La salida en la Terminal 2 será:
(integer) 0
Esto indica que ningún cliente recibió el mensaje porque cancelaste tu suscripción al canal en la Terminal 1.
Verificar que no se reciben mensajes
Observa la Terminal 1; deberías notar que no aparece ningún mensaje nuevo debido a que ya no estás suscrito al canal.
Esto demuestra cómo cancelar la suscripción a un canal evita que recibas más mensajes publicados en él, mientras que el publicador aún puede enviar mensajes (aunque nadie los reciba).
Importante: Mantén ambas terminales y sus sesiones de
redis-cliactivas para el siguiente paso.
Suscripción por patrones con PSUBSCRIBE
En este paso, aprenderás a suscribirte a canales utilizando patrones mediante el comando PSUBSCRIBE en Redis. PSUBSCRIBE te permite suscribirte a múltiples canales que coincidan con un patrón especificado. Esto resulta muy útil cuando deseas recibir mensajes de un grupo de canales relacionados sin necesidad de suscribirte a cada uno de ellos de forma individual.
Terminal 1: Suscripción por patrón
Dado que cancelaste tu suscripción a mychannel en el paso anterior, la Terminal 1 debería mostrar ahora un indicador de Redis normal.
En la Terminal 1, suscríbete a los canales que coincidan con el patrón news.* utilizando el comando PSUBSCRIBE:
PSUBSCRIBE news.*
La salida será similar a esta:
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
Analicemos la salida:
"psubscribe": Indica que te has suscrito exitosamente a un patrón."news.*": Es el patrón al que te suscribiste. El comodín.*coincide con cualquier conjunto de caracteres.(integer) 1: Es la cantidad de patrones a los que estás suscrito actualmente.
Terminal 2: Publicar en canales que coincidan con el patrón
Dirígete a la Terminal 2 y publica un mensaje en el canal news.sports usando el comando PUBLISH:
PUBLISH news.sports "Sports news update!"
La salida en la Terminal 2 indicará el número de suscriptores que recibieron el mensaje:
(integer) 1
Observar la coincidencia de patrones
Regresa a la Terminal 1 (donde te suscribiste al patrón). Deberías ver el mensaje que acabas de publicar:
1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"
Esto muestra lo siguiente:
"pmessage": Indica que se trata de un mensaje coincidente por patrón."news.*": El patrón que coincidió."news.sports": El canal real en el que se publicó el mensaje."Sports news update!": El contenido del mensaje.
Probar múltiples canales
En la Terminal 2, intenta publicar en diferentes canales que coincidan con el patrón:
PUBLISH news.technology "New AI breakthrough!"
PUBLISH news.weather "Sunny skies ahead!"
PUBLISH sports.basketball "This won't match the pattern"
Observa en la Terminal 1 que solo se reciben los mensajes de los canales que coinciden con news.*, mientras que sports.basketball se ignora porque no coincide con dicho patrón.
Importante: Mantén ambas terminales y sus sesiones de
redis-cliactivas. La suscripción por patrones demuestra cómo puedes escuchar múltiples canales relacionados de manera simultánea.
Resumen
En este laboratorio, exploraste los fundamentos de la mensajería Pub/Sub de Redis. Aprendiste a suscribirte a canales utilizando el comando SUBSCRIBE, a publicar mensajes en canales con el comando PUBLISH, a cancelar suscripciones usando el comando UNSUBSCRIBE, y a suscribirte a canales mediante patrones con el comando PSUBSCRIBE. Estos comandos son esenciales para construir aplicaciones de mensajería en tiempo real con Redis.


