redis
Pub / Sub
Zoeken…
Invoering
Redis biedt een implementatie van het berichtenpatroon Publiceren / Abonneren (Pub / Sub). In plaats van berichten naar specifieke ontvangers te verzenden, verzenden uitgevers berichten naar geïnteresseerde ontvangers via een indirectionmechanisme. Ontvangers specificeren interesse in bepaalde berichten. In Redis is deze functionaliteit toegankelijk via de PUBLISH en SUBSCRIBE commando's op kanalen.
Syntaxis
- AANMELDEN kanaal [kanaal ...]
- UNSUBSCRIBE [kanaal [kanaal ...]]
- PUBLISH kanaalbericht
- PSUBSCRIBE patroon [patroon ...]
- PUNSUBSCRIBE [patroon [patroon ...]]
Opmerkingen
Als u de pub / sub in redis wilt verwerken, moet u één client hebben voor abonneren en een andere client voor publiceren . Beide kunnen niet door dezelfde client worden afgehandeld. Hoewel alle andere opdrachten nog steeds met dezelfde client kunnen worden verwerkt.
Publiceren en abonneren met redis
Redis heeft publiceren / abonneren voor het verzenden van berichten. Dit wordt afgehandeld door zich op een kanaal te abonneren en op kanaal te publiceren. Ja, abonnees zullen zich abonneren op een of meer kanalen. De uitgever hoeft niet te weten wie alle abonnees zijn. In plaats daarvan publiceert de uitgever op een specifiek kanaal. Alle abonnees die zijn geabonneerd op dat kanaal ontvangen het bericht. Deze ontkoppeling van uitgevers en abonnees kan zorgen voor grotere schaalbaarheid en een meer dynamische netwerktopologie.
Voorbeeld: gebruiker abonneert zich op 2 kanalen, zeg foo & boo
SUBSCRIBE foo boo
In console van redis-client1:
127.0.0.1:6379> SUBSCRIBE foo boo
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "foo"
3) (integer) 1
1) "subscribe"
2) "boo"
3) (integer) 2
Het begint te luisteren naar berichten. Bij publicatie ontvangt u gegevens voor het bijbehorende kanaal.
Bijvoorbeeld: wanneer u een bericht wilt verzenden naar alle abonnees die verbonden zijn met boo, moet u dit naar dat kanaal publiceren.
PUBLISH boo "Hello Boo"
In console van redis-client1:
1) "message"
2) "boo" //channel name
3) "Hello Boo" //Actual data
Gebruik om het abonnement op elk gewenst moment op te zeggen voor het kanaal
UNSUBSCRIBE // to unsubscribe from all channels
UNSUBSCRIBE foo // to unsubscribe from specific channel
Kan ook abonneren op basis van patroon. Gebruik PSUBSCRIBE als de kanaalnaam niet zeker is / u zich wilt abonneren op basis van het patroon.
Gebruik PUNSUBSCRIBE op dezelfde manier als het abonnement opzeggen op basis van het patroon