Redis Pub/Sub
Pub/Sub est un moyen de collecter des données auprès d'un nombre quelconque d'éditeurs de données et de permettre à un ou plusieurs abonnés de consommer le flux en temps réel, sans avoir à se connecter directement aux éditeurs. Ce modèle permet aux systèmes d'évoluer plus facilement et d'ajouter ou de supprimer des éditeurs et des abonnés à tout moment.
Redis permet de créer des canaux Pub/Sub avec lesquels les éditeurs et les abonnés s'interfacent. Les messages sur un canal sont envoyés au maximum une fois à chaque abonné, ce qui les rend idéaux pour les actions de déclenchement qui ne doivent pas être dupliquées, mais attention, une fois délivré, un message sur un canal n'est pas persisté.
Cas d'utilisation :
- Message en temps réel.
- Chat éphémère multi-utilisateurs.
- Log streaming.
S'abonner à un canal
Un abonné émet simplement un "SUBSCRIBE"
> SUBSCRIBE mychannel
Si un abonné doit s'abonner à plus d'un canal, cela est également possible :
> SUBSCRIBE mychannel1 mychannel2 mychannel3
L'abonnement à un canal signifie que l'abonné recevra tous les messages publiés sur ce canal après son abonnement. Les messages plus anciens ne sont pas conservés, de sorte que l'abonné doit être connecté et abonné pour recevoir les messages au fur et à mesure.
Si le canal n'existe pas, l'abonné ne verra aucune erreur, ni aucun message.
Publier sur un canal
Un éditeur peut publier sur un canal avec la commande 'PUBLISH <channel> <message>
> PUBLISH mychannel "my first message"
et tous les abonnés recevront le message comme suit :
1) "message"
2) "mychannel"
3) "my first message"
Le message d'abonnement comprend le nom du canal et le message lui-même.
Un modèle courant consiste à envoyer des objets JSON en tant que texte du message :
> PUBLISH mychannel '{"id":"1234","name":"db14","msg":"Out of Memory"}'
La valeur de retour de " PUBLISH
est un nombre entier qui indique à l'appelant combien d'abonnés ont reçu le message.
Abonnement sélectif
Au lieu de s'abonner à des chaînes entières, il est possible de s'abonner à des chaînes génériques. En nommant prudemment les canaux, il peut être utile de voir, par exemple, tous les journaux d'une application, uniquement les journaux de production ou uniquement les journaux de la base de données de production.
> PSUBSCRIBE *
> PSUBSCRIBE prod_*
> PSUBSCRIBE prod_database_*
> PSUBSCRIBE prod_database_db57_activity_*
Désinscription
Un abonné peut se désabonner de tous les canaux auxquels il est abonné en cliquant sur :
> UNSUBSCRIBE