Dieser Artikel vermittelt Ihnen relevantes Wissen überRedis, in dem hauptsächlich Probleme im Zusammenhang mit Publish und Subscribe vorgestellt werden. Redis Publish and Subscribe (Pub/Sub) ist ein Nachrichtenkommunikationsmodus: Der Absender (Pub) sendet eine Nachricht, der Abonnent (Sub). ) wirft einen Blick darauf. Ich hoffe, dass es für alle hilfreich sein wird.
Empfohlenes Lernen:Redis-Video-Tutorial
Redis Veröffentlichen und Abonnieren (Pub/Sub) ist einNachrichtenkommunikationsmodell: Der Absender (Pub) sendet eine Nachricht und der Abonnent (Sub) empfängt die Nachricht .
Redis-Kunden können beliebig viele Kanäle abonnieren.
Nachrichtendiagramm abonnieren/veröffentlichen:
Erstes Objekt: Absender der Nachricht. Zweites Objekt: Kanal. Das dritte Objekt: Nachrichtenabonnent.
Die folgende Abbildung zeigt die Beziehung zwischen Kanal Kanal1 und den drei Clients, die diesen Kanal abonnieren – Client2, Client5 und Client1:
Wenn über den PUBLISH-Befehl eine neue Nachricht an Kanal Kanal1 gesendet wird, ist dies der Fall Die Nachricht wird an die drei Clients gesendet, die sie abonniert haben:
Befehl | Beschreibung |
---|---|
Befehl „Kanalnachricht veröffentlichen“ | sendet Informationen an den angegebenen Kanal. |
Kanal [Kanal …] ABONNIEREN | Informationen von einem oder mehreren bestimmten Kanälen abonnieren. |
Kanal ABONNIEREN [Kanal …] | bezieht sich auf die Abmeldung von einem bestimmten Kanal. |
[PUNSUBSCRIBE-Muster [Muster …]] | Alle Kanäle des angegebenen Musters abbestellen. |
[PUBSUB-Argument [Argument…] | Zeigen Sie den Abonnement- und Veröffentlichungssystemstatus an. |
PSUBSCRIBE-Muster [Muster …] | Abonnieren Sie einen oder mehrere Kanäle, die dem angegebenen Muster entsprechen. |
Test
Abonnent:
127.0.0.1:6379> subscribe mianbao # 订阅频道 mianbao Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "mianbao" 3) (integer) 1 # 等待读取推送的消息 1) "message" # 消息 2) "mianbao" # 频道 3) "hello" # 消息内容 1) "message" 2) "mianbao" 3) "hello redis"
Sender:
127.0.0.1:6379> publish mianbao "hello" # 发送消息到频道 (integer) 1 127.0.0.1:6379> publish mianbao "hello redis" (integer) 1
Redis ist in C implementiert. Durch die Analyse der pubsub.c-Datei im Redis-Quellcode können wir die Veröffentlichung und das Abonnement verstehen Die zugrunde liegende Implementierung wird verwendet, um das Verständnis von Redis zu vertiefen.
Redis implementiert Veröffentlichungs- und Abonnementfunktionen durch Befehle wie PUBLISH, SUBSCRIBE und PSUBSCRIBE.
Nach dem Abonnieren eines Kanals über den Befehl SUBSCRIBE wird im Redis-Server ein Wörterbuch verwaltet. Der Schlüssel des Wörterbuchs ist jeder Kanal (Kanal) und der Wert des Wörterbuchs ist eine verknüpfte Liste die diesen Kanal abonnieren. Der Schlüssel zum Befehl SUBSCRIBE besteht darin, den Client zur Abonnementliste eines bestimmten Kanals hinzuzufügen.
Senden Sie eine Nachricht an den Abonnenten über den PUBLISH-Befehl. Der Redis-Server verwendet den angegebenen Kanal als Schlüssel, durchsucht die verknüpfte Liste aller Clients, die diesen Kanal im von ihm verwalteten Kanalwörterbuch abonniert haben, durchsucht die verknüpfte Liste und Veröffentlichen Sie die Nachricht an alle Abonnenten.
Pub/Sub bedeutet wörtlich „Veröffentlichen“ und „Abonnieren“ (Abonnieren). In Redis können Sie die Veröffentlichung einer Nachricht und ein Nachrichtenabonnement für einen bestimmten Schlüsselwert einrichten, und zwar für alle Clients, die sie abonnieren dazu erhalten Sie die entsprechende Nachricht. Die offensichtlichste Verwendung dieser Funktion ist die eines Echtzeit-Messaging-Systems, z. B. für gewöhnliche Sofort-Chats, Gruppen-Chats und andere Funktionen.
Für etwas komplexere Szenarien verwenden wir Nachrichten-Middleware: RabbitMQ, RocketMQ, ActiveMQ, kafka
Empfohlenes Lernen:Redis-Video-Tutorial
Das obige ist der detaillierte Inhalt vonRedis-Studiennotizen veröffentlichen und abonnieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!