redis
Pub / Sub
Szukaj…
Wprowadzenie
Redis zapewnia implementację wzorca komunikatów Publikuj / Subskrybuj (Pub / Sub). Zamiast wysyłać wiadomości do określonych odbiorców, wydawcy wysyłają wiadomości do zainteresowanych odbiorców za pośrednictwem mechanizmu pośredniczącego. Odbiorcy określają zainteresowanie poszczególnymi wiadomościami. W Redis ta funkcjonalność jest dostępna za pomocą komend PUBLISH i SUBSCRIBE na kanałach.
Składnia
- SUBSKRYBUJ kanał [kanał ...]
- UNSUBSCRIBE [kanał [kanał ...]]
- PUBLIKUJ komunikat o kanale
- Wzór PSUBSCRIBE [wzór ...]
- PUNSUBSCRIBE [wzór [wzór ...]]
Uwagi
Aby obsłużyć pub / sub w redis, musisz mieć jednego klienta do subskrypcji i innego klienta do publikacji . Oba nie mogą być obsługiwane przez tego samego klienta. Chociaż wszystkie pozostałe polecenia mogą być nadal obsługiwane za pomocą tego samego klienta.
Publikuj i subskrybuj za pomocą redis
Redis opublikował / zasubskrybował do wysyłania wiadomości. Jest to obsługiwane przez subskrybowanie kanału i publikowanie na kanale. Tak, subskrybenci zasubskrybują jeden lub więcej kanałów. Wydawca nie musi wiedzieć, kto jest subskrybentem. Zamiast tego wydawca opublikuje na określonym kanale. Wszyscy subskrybenci, którzy subskrybują ten kanał, otrzymają wiadomość. To oddzielenie wydawców i subskrybentów może pozwolić na większą skalowalność i bardziej dynamiczną topologię sieci.
Przykład: użytkownik subskrybuje 2 kanały z napisem foo & boo
SUBSCRIBE foo boo
W konsoli 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
Zacznie nasłuchiwać wiadomości. Po opublikowaniu otrzymają dane dla odpowiedniego kanału.
Na przykład: jeśli chcesz wysłać wiadomość do wszystkich subskrybentów związanych z boo, musisz opublikować na tym kanale.
PUBLISH boo "Hello Boo"
W konsoli redis-client1:
1) "message"
2) "boo" //channel name
3) "Hello Boo" //Actual data
Aby anulować subskrypcję kanału w dowolnym momencie, użyj
UNSUBSCRIBE // to unsubscribe from all channels
UNSUBSCRIBE foo // to unsubscribe from specific channel
Może również subskrybować na podstawie wzorca. Jeśli nazwa kanału nie jest pewna / chcesz subskrybować na podstawie wzorca, użyj PSUBSCRIBE .
Podobnie do wypisania się na podstawie wzorca użyj PUNSUBSCRIBE