Redis-Pub/Sub

Redis Pub/Sub (Pub/Sub) ist ein Nachrichtenkommunikationsmuster: Sender (pub) senden Nachrichten, und Abonnenten (sub) empfangen Nachrichten.

Redis-Clients können beliebig viele Kanäle abonnieren.

Das folgende Diagramm zeigt die Beziehung zwischen channel1 und den drei Clients, die diesen Kanal abonniert haben — client2, client5 und client1:

Wenn eine neue Nachricht über den PUBLISH-Befehl an channel1 gesendet wird, wird die Nachricht an die drei Clients zugestellt, die sie abonniert haben:


Beispiel

Das folgende Beispiel zeigt, wie Pub/Sub funktioniert. Sie müssen zwei redis-cli-Clients öffnen.

In unserem Beispiel haben wir einen Abonnement-Kanal namensexampleChat erstellt:

Erster redis-cli-Client

redis 127.0.0.1:6379> SUBSCRIBE exampleChat

Nachrichten werden gelesen... (Zum Beenden Ctrl-C drücken)
1) "subscribe"
2) "exampleChat"
3) (integer) 1

Jetzt starten wir einen Redis-Client neu und veröffentlichen dann zwei Nachrichten im selben Kanal exampleChat. Der Abonnent erhält die Nachrichten.

Zweiter redis-cli-Client

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

(integer) 1

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

(integer) 1

# Der Client des Abonnenten zeigt die folgenden Nachrichten an
 1) "message"
2) "exampleChat"
3) "Redis PUBLISH test"
 1) "message"
2) "exampleChat"
3) "Learn redis by example.com"

Die GIF-Demonstration sieht wie folgt aus:

  • Starten Sie den lokalen Redis-Dienst und öffnen Sie zwei redis-cli-Clients.

  • Imersten redis-cli-Clientgeben SieSUBSCRIBE exampleChatein, was bedeutet: abonnieren SieexampleChatden Kanal.

  • Imzweiten redis-cli-Clientgeben SiePUBLISH exampleChat "Redis PUBLISH test"ein, um eine Nachricht an den exampleChat-Kanal zu senden. Zu diesem Zeitpunkt sieht der erste redis-cli-Client die vom zweiten redis-cli-Client gesendete Testnachricht.


Redis-Pub/Sub-Befehle

Die folgende Tabelle listet gängige Redis-Pub/Sub-Befehle auf:

Nein.Befehl und Beschreibung
1PSUBSCRIBE pattern [pattern ...]
Abonnieren Sie einen oder mehrere Kanäle, die dem angegebenen Muster entsprechen.
2PUBSUB subcommand [argument [argument ...]]
Zeigen Sie den Status des Abonnement- und Veröffentlichungssystems an.
3PUBLISH channel message
Senden Sie eine Nachricht an den angegebenen Kanal.
4PUNSUBSCRIBE [pattern [pattern ...]]
Heben Sie das Abonnement für alle Kanäle auf, die dem angegebenen Muster entsprechen.
5SUBSCRIBE channel [channel ...]
Abonnieren Sie die Informationen von einem oder mehreren angegebenen Kanälen.
6UNSUBSCRIBE [channel [channel ...]]
Bezieht sich auf das Aufheben des Abonnements für den/die angegebenen Kanal/Kanäle.
Weitere Erweiterungen