Ein einzelner Benutzer kann mehrere Kanäle abonnieren und die an diesen Kanal gesendeten Nachrichten der Verlage anzeigen. Sie können sich auch jederzeit vom Kanal abmelden.
In diesem Tutorial erfahren Sie, wie Sie ein einfaches Veröffentlichungs-Subscribe-Modell mit Redis implementieren können.
Es ist gut zu beachten, dass wir native Redis -Befehle und keinen benutzerdefinierten Code in Python, Ruby, JavaScript oder anderen verwenden werden.
Redis Pub-Sub-Befehle.
Bei der Arbeit mit dem Publish-Subscribe-Modell in Redis kommen zwei Hauptbefehle ins Spiel:
Diese Befehle sind unkompliziert und beschreiben die Funktion, die sie übernehmen. Zum Beispiel wird der Befehl abonnieren, um einen Client für einen bestimmten Kanal oder Kanal zu abonnieren.
Mit dem Befehl veröffentlichen ermöglicht es einem Absender oder Verlag, eine Nachricht an eine bestimmte Anzahl von Kanälen zu senden.
Basic Pub-Sub-Modell
In diesem Tutorial wird ein einfaches Pub-Sub-Modell implementiert, um zu zeigen, wie es in Redis funktioniert.
Dafür benötigen Sie einen Redis -Cluster in Ihrem System in Betrieb.
Eröffnen Sie mit drei Terminalsitzungen und starten Sie die Redis -CLI in jedem von ihnen.
Sobald Sie alle Terminals geöffnet und eingerichtet haben, verwenden Sie einen der Terminals, um einen Kanal zu abonnieren.
Der Befehl abonnieren nimmt den Namen des Kanals als Argument an. Die allgemeine Syntax kann als:
ABONNIEREN
Der Name hängt ganz von Ihnen ab und Sie können ihn nennen, was Sie wollen. In dem folgenden Befehl zeichnen wir beispielsweise einen Kanal namens LinuxHint ab.
127.0.0.1: 6379> LinuxHint abonnieren
Meldungen lesen… (Drücken Sie Strg-C, um zu beenden)
1) "abonnieren"
2) "LinuxHint"
3) (Ganzzahl) 1
Im obigen Beispiel abonnieren wir einen Kanal namens LinuxHint und können alle Nachrichten empfangen, die in diesem Kanal veröffentlicht werden.
Verwenden Sie es, um eine Nachricht an den LinuxHint -Kanal im zweiten Terminal zu veröffentlichen.
Verwenden Sie den Befehl veröffentlichen, gefolgt vom Namen des Kanals und der zu veröffentlichen.
Zum Beispiel:
127.0.0.1: 6379> veröffentlichen LinuxHint "Hallo, alle!"
(Ganzzahl) 1
Achten Sie auf das erste Terminal und führen Sie den obigen Befehl aus. Sie werden feststellen, dass die Nachricht automatisch auf dem Kanal angezeigt wird, in dem der Benutzer abonniert hat.
Eine Beispielausgabe am Abonnententerminal ist wie gezeigt:
1) "Nachricht"
2) "LinuxHint"
3) "Hallo, alle!"
Es enthält den Typ, in diesem Fall eine Nachricht, den Kanal und den tatsächlichen Inhalt der Nachricht.
Hinweis: Wenn Sie eine Nachricht veröffentlichen müssen, können Sie sie in Anführungszeichen einschließen, und Redis wird sie eher als eine einzige Nachricht als als Befehlsargumente behandeln.
Im dritten Terminal werden wir es verwenden, um mit dem Befehl psubscribe mehrere Kanäle zu abonnieren.
Der Befehl psubscribe nimmt ein bestimmtes Muster an und zeichnet den Benutzer diesen Kanälen ab.
Um beispielsweise alle Kanäle zu abonnieren, die mit dem Zeichen der Zeichen Linux beginnen, können wir den Befehl als:
127.0.0.1: 6379> psubscribe linux*
Meldungen lesen… (Drücken Sie Strg-C, um zu beenden)
1) "psubscribe"
2) "Linux*"
3) (Ganzzahl) 1
Sobald wir den obigen Befehl ausgeführt haben, erhält der Abonnent (in Terminal 3) die Nachricht, wenn wir eine Nachricht an einen Kanal mit dem Namen Linux veröffentlichen.
Führen Sie beispielsweise im zweiten Terminal die folgenden Befehle aus:
127.0.0.1: 6379> Linuxuser veröffentlichen "für Linuxuser -Kanäle"
127.0.0.1: 6379> LinuxHint veröffentlichen "für LinuxHint -Kanäle"
127.0.0.1: 6379> LinuxCommander "für LinuxCommander -Kanäle" veröffentlichen "
Achten Sie nun auf das dritte Terminal mit dem Muster abonnieren. Sie werden feststellen, dass der Abonnent in diesem Terminal alle drei Nachrichten empfängt, während der in Terminal 1 nur die Nachricht an den Kanal „LinuxHint“ empfängt.
Wie Sie sehen können, zeichnet sich der Befehl psubkribiener.
Schließen
Dieser Leitfaden untersuchte die Grundlagen der Verwendung des Redis Publish-Subscribe-Modells. Obwohl der Leitfaden nur die Grundlagen abdeckt, können Sie ihn erweitern, um benutzerdefinierte Echtzeitanwendungen zu erstellen.