Redis Pub/Sub
Pub/Sub es un medio para recopilar datos de cualquier número de editores de datos y permitir que 1 o más suscriptores consuman la fuente en tiempo real, sin tener que conectarse directamente a los editores. Este patrón permite que los sistemas se amplíen más fácilmente y que se añadan o eliminen editores y suscriptores en cualquier momento.
Redis permite la creación de canales Pub/Sub a los que se conectan editores y suscriptores. Los mensajes de un canal se envían como máximo una vez a cada suscriptor, lo que los hace ideales para acciones desencadenantes que no deben duplicarse, pero cuidado porque una vez entregados, los mensajes de un canal no persisten.
Casos prácticos:
- Mensaje en tiempo real.
- Chat efímero multiusuario.
- Log streaming.
Suscribirse a un canal
Un abonado sólo tiene que emitir un "ABONARSE"
> SUBSCRIBE mychannel
Si un abonado necesita suscribirse a más de un canal, también es posible:
> SUBSCRIBE mychannel1 mychannel2 mychannel3
La suscripción a un canal implica que el suscriptor recibirá todos los mensajes que se publiquen en ese canal después de haberse suscrito. Los mensajes antiguos no se conservan, por lo que el suscriptor debe estar conectado y suscrito para recibir los mensajes a medida que se producen.
Si el canal no existe, el abonado no verá ningún error ni ningún mensaje.
Publicar en un canal
Un editor puede publicar en un canal con el comando ' PUBLISH <channel> <message> ':
> PUBLISH mychannel "my first message"
y los abonados recibirán el mensaje de la siguiente manera:
1) "message"
2) "mychannel"
3) "my first message"
El mensaje de suscripción incluye el nombre del canal y el propio mensaje.
Un patrón común es enviar objetos JSON como texto del mensaje:
> PUBLISH mychannel '{"id":"1234","name":"db14","msg":"Out of Memory"}'
El valor de retorno de ' PUBLISH ' es un número entero que indica al llamante cuántos abonados han recibido el mensaje.
Suscripción selectiva
En lugar de suscribirse a canales completos, es posible suscribirse a canales comodín. Mediante una nomenclatura prudente de los canales, esto puede ser útil para ver, por ejemplo, todos los registros de una aplicación, sólo sus registros de producción o sólo los registros de su base de datos de producción.
> PSUBSCRIBE *
> PSUBSCRIBE prod_*
> PSUBSCRIBE prod_database_*
> PSUBSCRIBE prod_database_db57_activity_*
Darse de baja
Un abonado puede darse de baja de todos sus canales suscritos con:
> UNSUBSCRIBE