Mensajería Pub/Sub de Redis

RedisBeginner
Practicar Ahora

Introducción

En este laboratorio, explorará el sistema de mensajería Pub/Sub de Redis. Aprenderá a suscribirse a canales, publicar mensajes y darse de baja. Este laboratorio lo guiará a través de las operaciones fundamentales utilizando los comandos SUBSCRIBE, PUBLISH, UNSUBSCRIBE y PSUBSCRIBE.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 80% por parte de los estudiantes.

Suscribirse a un Canal con SUBSCRIBE

En este paso, aprenderá a suscribirse a un canal en Redis utilizando el comando SUBSCRIBE. Suscribirse a un canal le permite recibir mensajes publicados en ese canal. Este es un concepto fundamental en el sistema de mensajería Pub/Sub de Redis.

Terminal 1: Suscribirse al Canal

Abra su primera terminal (la llamaremos Terminal 1). Puede usar la terminal Xfce proporcionada en el entorno de LabEx.

Conéctese al servidor Redis usando el comando redis-cli:

redis-cli

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

Suscríbase 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": Esto indica que se ha suscrito correctamente a un canal.
  • "mychannel": Este es el nombre del canal al que se ha suscrito.
  • (integer) 1: Este es el número de canales a los que está suscrito actualmente.

Importante: Mantenga la Terminal 1 abierta con la sesión de redis-cli activa y suscrita al canal. NO cierre esta terminal ni presione Ctrl+C, ya que esto lo daría de baja del canal. Utilizaremos una segunda terminal para publicar mensajes en el siguiente paso.

Publicar Mensajes con PUBLISH

En este paso, aprenderá a publicar mensajes en un canal en Redis utilizando el comando PUBLISH. Publicar mensajes es la funcionalidad principal del sistema Pub/Sub, lo que le permite enviar datos a todos los suscriptores de un canal específico.

Terminal 2: Publicar Mensajes

Abra una segunda terminal (la llamaremos Terminal 2). Puede abrir una nueva pestaña en su terminal Xfce.

Conéctese al servidor Redis usando el comando redis-cli:

redis-cli

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

Ahora, publique un mensaje en el canal mychannel usando el comando PUBLISH:

PUBLISH mychannel "Hello, Redis!"

La salida en la Terminal 2 será el número de clientes que recibieron el mensaje:

(integer) 1

En este caso, la salida es (integer) 1 porque tiene una suscripción activa a mychannel en la Terminal 1 del paso anterior.

Observar el Mensaje en la Terminal 1

Ahora vuelva a la Terminal 1 (donde se suscribió a mychannel en el Paso 1). Debería ver el mensaje que acaba de publicar mostrado en tiempo real:

1) "message"
2) "mychannel"
3) "Hello, Redis!"

Esto muestra:

  • "message": Indica que este es un mensaje publicado
  • "mychannel": El canal al que se publicó el mensaje
  • "Hello, Redis!": El contenido real del mensaje

Probar la Mensajería en Tiempo Real

Ahora puede experimentar con la mensajería en tiempo real:

  1. Vuelva a la Terminal 2 y publique más mensajes
  2. Cambie a la Terminal 1 para verlos aparecer instantáneamente
  3. Intente publicar mensajes diferentes para observar la comunicación en vivo

Ejemplo - en la Terminal 2:

PUBLISH mychannel "This is message 2"
PUBLISH mychannel "Real-time messaging works!"

Importante: Mantenga activas ambas terminales (Terminal 1 y Terminal 2) con sus sesiones de redis-cli. Continuaremos usando ambas terminales en los próximos pasos.

Darse de baja con UNSUBSCRIBE

En este paso, aprenderá cómo darse de baja de un canal en Redis utilizando el comando UNSUBSCRIBE. Darse de baja elimina a un cliente de la lista de suscriptores de un canal específico, impidiendo que reciba mensajes adicionales publicados en ese canal.

Terminal 1: Salir del modo de suscripción

Vaya a la Terminal 1 (donde actualmente está suscrito a mychannel). Debería ver el estado de la suscripción mostrando "Reading messages... (press Ctrl-C to quit)".

Dado que la Terminal 1 está en modo de suscripción, no puede ejecutar comandos regulares de Redis directamente. Para darse de baja, primero debe salir del modo de suscripción:

  1. Presione Ctrl+C para salir del modo de suscripción.

  2. Debería ver que la sesión de redis-cli finaliza y regresa al prompt de la terminal.

  3. Vuelva a conectarse a Redis:

    redis-cli
  4. Ahora puede ejecutar el comando UNSUBSCRIBE (aunque no es necesario, ya que la desconexión ya lo ha dado de baja):

    UNSUBSCRIBE mychannel

Nota: Cuando presionó Ctrl+C, en realidad ya se desconectó de todas las suscripciones. El comando UNSUBSCRIBE se muestra con fines demostrativos, pero en la práctica, desconectarse lo da de baja 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": Esto indica que se ha dado de baja de un canal.
  • "mychannel": Este es el nombre del canal del que se ha dado de baja.
  • (integer) 0: Este es el número de canales a los que está suscrito actualmente. Ahora es 0 porque se dio de baja de mychannel.

Terminal 2: Probar la publicación después de darse de baja

Ahora cambie a la Terminal 2 y publique 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 se dio de baja del canal en la Terminal 1.

Verificar que no se recibió ningún mensaje

Mire la Terminal 1: debería notar que no aparece ningún mensaje nuevo porque se ha dado de baja del canal.

Esto demuestra cómo darse de baja de un canal le impide recibir mensajes adicionales publicados en ese canal, mientras que el publicador aún puede enviar mensajes (pero nadie los recibirá).

Importante: Mantenga ambas terminales y sus sesiones de redis-cli activas para el siguiente paso.

Suscribirse por Patrón con PSUBSCRIBE

En este paso, aprenderá a suscribirse a canales utilizando patrones con el comando PSUBSCRIBE en Redis. PSUBSCRIBE le permite suscribirse a múltiples canales que coinciden con un patrón especificado. Esto es útil cuando desea recibir mensajes de un grupo de canales relacionados sin suscribirse a cada uno individualmente.

Terminal 1: Suscripción por Patrón

Dado que se dio de baja de mychannel en el paso anterior, la Terminal 1 ahora debería mostrar un prompt de Redis normal.

En la Terminal 1, suscríbase a 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": Esto indica que se ha suscrito correctamente a un patrón.
  • "news.*": Este es el patrón al que se suscribió. El .* es un comodín que coincide con cualquier carácter.
  • (integer) 1: Este es el número de patrones a los que está suscrito actualmente.

Terminal 2: Publicar en Canales que Coinciden con el Patrón

Vaya a la Terminal 2 y publique un mensaje en el canal news.sports usando el comando PUBLISH:

PUBLISH news.sports "Sports news update!"

La salida en la Terminal 2 será el número de suscriptores que recibieron el mensaje:

(integer) 1

Observar la Coincidencia de Patrones

Vuelva a la Terminal 1 (donde se suscribió al patrón). Debería ver el mensaje que acaba de publicar:

1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"

Esto muestra:

  • "pmessage": Indica que este es un mensaje que coincide con un patrón.
  • "news.*": El patrón que coincidió.
  • "news.sports": El canal real al que se publicó el mensaje.
  • "Sports news update!": El contenido del mensaje.

Probar Múltiples Canales

En la Terminal 2, intente 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"

Observe en la Terminal 1 que solo se reciben los canales news.*, mientras que sports.basketball no se recibe porque no coincide con el patrón news.*.

Importante: Mantenga ambas terminales y sus sesiones de redis-cli activas. La suscripción por patrón demuestra cómo puede escuchar múltiples canales relacionados simultáneamente.

Resumen

En este laboratorio, exploró los fundamentos de la mensajería Pub/Sub de Redis. Aprendió a suscribirse a canales utilizando el comando SUBSCRIBE, a publicar mensajes en canales utilizando el comando PUBLISH, a darse de baja de canales utilizando el comando UNSUBSCRIBE y a suscribirse a canales utilizando patrones con el comando PSUBSCRIBE. Estos comandos son esenciales para crear aplicaciones de mensajería en tiempo real con Redis.