Redis Publicación/Suscripción

Redis Publicación/Suscripción (pub/sub) es un modo de comunicación de mensajes: el publicador (pub) envía mensajes y el suscriptor (sub) los recibe.

Los clientes de Redis pueden suscribirse a cualquier cantidad de canales.

La siguiente figura muestra el canal channel1 y la relación entre los tres clientes suscritos a este canal: client2, client5 y client1:

Cuando se envía un nuevo mensaje al canal channel1 mediante el comando PUBLISH, este mensaje se envía a los tres clientes suscritos a él:


Ejemplo

El siguiente ejemplo demuestra cómo funciona Publicación/Suscripción; se necesitan abrir dos clientes redis-cli.

En nuestro ejemplo hemos creado un canal de suscripción llamadoejemploChat:

Primer cliente redis-cli

redis 127.0.0.1:6379> SUBSCRIBE ejemploChat

Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "ejemploChat"
3) (integer) 1

Ahora abrimos primero otro cliente de redis y luego publicamos dos mensajes en el mismo canal ejemploChat; el suscriptor podrá recibir los mensajes.

Segundo cliente redis-cli

redis 127.0.0.1:6379> PUBLISH ejemploChat "Redis PUBLISH test"

(integer) 1

redis 127.0.0.1:6379> PUBLISH ejemploChat "Learn redis by example.com"

(integer) 1

# El cliente del suscriptor mostrará el siguiente mensaje
 1) "message"
2) "ejemploChat"
3) "Redis PUBLISH test"
 1) "message"
2) "ejemploChat"
3) "Learn redis by example.com"

La demostración en gif es la siguiente:

  • Inicie el servicio Redis local y abra dos clientes redis-cli.

  • EnPrimer cliente redis-cliIngreseSUBSCRIBE ejemploChat, lo que significa suscribirse alejemploChatcanal.

  • EnSegundo cliente redis-cliIngresePUBLISH ejemploChat "Redis PUBLISH test"Envíe un mensaje al canal ejemploChat; en este momento, en el primer cliente redis-cli verá el mensaje de prueba enviado por el segundo cliente redis-cli.


Comandos de Redis Publicación/Suscripción

La siguiente tabla enumera los comandos comunes de Redis Publicación/Suscripción:

N.ºComando y descripción
1PSUBSCRIBE pattern [pattern ...]
Suscribirse a uno o más canales que coincidan con un patrón dado.
2PUBSUB subcommand [argument [argument ...]]
Consultar el estado del sistema de suscripción y publicación.
3PUBLISH channel message
Enviar un mensaje al canal especificado.
4PUNSUBSCRIBE [pattern [pattern ...]]
Cancelar la suscripción a todos los canales que coincidan con el patrón dado.
5SUBSCRIBE channel [channel ...]
Suscribirse a la información de uno o más canales especificados.
6UNSUBSCRIBE [channel [channel ...]]
Cancelar la suscripción a los canales determinados.
Otras extensiones