SUBSCRIBE / PSUBSCRIBE în Redis & In-Memory Data Store

Abonează clientul la unul sau mai multe canale Pub/Sub (SUBSCRIBE) sau la canale după un tipar (PSUBSCRIBE).

Sintaxă comandă
SUBSCRIBE channel [channel ...]
PSUBSCRIBE pattern [pattern ...]
UNSUBSCRIBE [channel ...]

Ce face SUBSCRIBE / PSUBSCRIBE

După SUBSCRIBE, conexiunea intră în modul abonat și primește fiecare mesaj publicat pe canale ca o listă de trei elemente: message, numele canalului și mesajul. Primul răspuns confirmă abonarea și numărul de canale la care ești abonat.

PSUBSCRIBE acceptă tipare glob (comenzi:*) și primește mesaje cu patru elemente: pmessage, tiparul, canalul real și mesajul. În modul abonat (RESP2) conexiunea poate rula doar comenzi de abonare, PING, RESET și QUIT. În redis-cli ieși cu Ctrl-C.

Parametri

Parametru Descriere
channel ... Canalele la care te abonezi.
pattern ... Tipare glob pentru PSUBSCRIBE.

Ce returnează

Nu întoarce un răspuns obișnuit: trimite câte o confirmare pentru fiecare canal, apoi mesajele pe măsură ce sunt publicate.

Exemple

Exemplul 1: Ascultarea notificărilor

Confirmarea, apoi un mesaj publicat de alt client cu PUBLISH notificari ....

SUBSCRIBE notificari

Ieșire în redis-cli

127.0.0.1:6379> SUBSCRIBE notificari
1) "subscribe"
2) "notificari"
3) (integer) 1
1) "message"
2) "notificari"
3) "Comanda 1042 a fost livrata"

Exemplul 2: Abonare după tipar

Un singur abonament primește mesajele de pe toate canalele comenzi:*; al treilea element arată canalul real.

PSUBSCRIBE comenzi:*

Ieșire în redis-cli

127.0.0.1:6379> PSUBSCRIBE comenzi:*
1) "psubscribe"
2) "comenzi:*"
3) (integer) 1
1) "pmessage"
2) "comenzi:*"
3) "comenzi:iasi"
4) "comanda noua 1044"

Greșeli frecvente

  • Nu folosi aceeași conexiune pentru abonare și pentru alte comenzi: în modul abonat ea nu mai poate rula GET, SET etc.
  • Mesajele trimise cât timp clientul era deconectat sunt pierdute definitiv.
  • Dacă ești abonat și cu SUBSCRIBE, și cu un PSUBSCRIBE care se potrivește, primești același mesaj de două ori.

Comenzi înrudite

  • PUBLISH: Trimite un mesaj pe un canal Pub/Sub tuturor clienților abonați în acel moment.
  • XREAD: Citește intrări noi din unul sau mai multe stream-uri, după un ID dat, opțional așteptând (BLOCK) până apar date.
  • XREADGROUP: Citește mesaje dintr-un stream ca membru al unui grup de consumatori; fiecare mesaj ajunge la un singur consumator.