En enkelt bruker kan abonnere på flere kanaler og se utgivernes meldinger sendt til den kanalen. De kan også melde seg fra kanalen når som helst.
Denne opplæringen vil lære å implementere en enkel publiser-abonnementsmodell ved hjelp av Redis.
Det er bra å merke seg at vi vil bruke Native Redis -kommandoer og ikke en tilpasset kode i Python, Ruby, JavaScript eller andre.
Redis pub-sub-kommandoer.
Når du jobber med Publiser-Subscribe-modellen i Redis, kommer to hovedkommandoer inn i spill:
Disse kommandoene er enkle og beskriver funksjonen de påtar seg. For eksempel brukes abonnementskommandoen til å abonnere på en klient på en bestemt kanal eller kanal.
Publiser -kommandoen lar en avsender eller utgiver sende en melding til et bestemt antall kanaler.
Grunnleggende pub-sub-modell
Denne opplæringen vil implementere en enkel pub-sub-modell for å vise hvordan den fungerer i Redis.
For dette vil du kreve en Redis -klynge i gang på systemet ditt.
Begynn med å åpne tre terminaløkter og starte Redis CLI i hver av dem.
Når du har alle terminalene åpne og satt opp, bruker du en av terminalene for å abonnere på en kanal.
Abonner -kommandoen tar navnet på kanalen som argument. Den generelle syntaksen kan bli representert som:
ABONNERE
Navnet vil helt avhenge av deg, og du kan navngi det hva du vil. I kommandoen nedenfor abonnerer vi for eksempel på en kanal som heter Linuxhint.
127.0.0.1: 6379> Abonner Linuxhint
Lesemeldinger ... (Trykk på CTRL-C for å slutte)
1) "Abonner"
2) "Linuxhint"
3) (Heltall) 1
I eksemplet over abonnerer vi på en kanal som heter Linuxhint, og vi kan begynne å motta eventuelle meldinger som er publisert til den kanalen.
Bruk den til å publisere en melding til Linuxhint -kanalen i den andre terminalen.
Bruk publiser -kommandoen etterfulgt av navnet på kanalen og meldingen som skal publiseres.
For eksempel:
127.0.0.1: 6379> Publiser Linuxhint "Hei, alle sammen!""
(Heltall) 1
Vær oppmerksom på den første terminalen og utfør kommandoen ovenfor. Du vil merke at meldingen automatisk vises på kanalen der brukeren har abonnert.
Et eksempelutgang på abonnentterminalen er som vist:
1) "Melding"
2) "Linuxhint"
3) "Hei, alle sammen!""
Den inneholder typen, i dette tilfellet en melding, kanalen og det faktiske innholdet i meldingen.
Merk: Når du trenger å publisere en melding, kan du legge inn den i anførselstegn, og Redis vil behandle den som en enkelt melding i stedet for kommandoargumenter.
I den tredje terminalen vil vi bruke den til å abonnere på flere kanaler ved å bruke PSUBScribe -kommandoen.
PSUBScribe -kommandoen tar et spesifikt mønster og abonnerer brukeren til disse kanalene.
For å abonnere på alle kanaler som starter med karakterene Linux, kan vi for eksempel sette kommandoen som:
127.0.0.1: 6379> PsubScribe Linux*
Lesemeldinger ... (Trykk på CTRL-C for å slutte)
1) "Psubscribe"
2) "Linux*"
3) (Heltall) 1
Når vi kjører kommandoen over, hvis vi publiserer en melding til en kanal med navnet Linux, vil abonnenten (i terminal 3) motta meldingen.
I den andre terminalen, utfør for eksempel følgende kommandoer:
127.0.0.1: 6379> Publiser Linuxuser "for Linuxuser -kanaler"
127.0.0.1: 6379> Publiser Linuxhint "for Linuxhint -kanaler"
127.0.0.1: 6379> Publiser LinuxCommander "for LinuxCommander -kanaler"
Nå vær oppmerksom på den tredje terminalen med mønsteret abonnerer. Du vil merke at abonnenten i den terminalen mottar alle tre meldingene, mens den i terminal 1 bare mottar meldingen som er sendt til "Linuxhint" -kanalen.
Som du kan se, abonnerer Psubcribe -kommandoen på kanaler som samsvarer med et spesifikt mønster.
Lukking
Denne guiden så på det grunnleggende om å bruke Redis Publiser-Subscribe-modellen. Selv om guiden bare dekker det grunnleggende, kan du utvide den for å lage tilpassede sanntidsapplikasjoner.