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



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow