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,SETetc. - Mesajele trimise cât timp clientul era deconectat sunt pierdute definitiv.
- Dacă ești abonat și cu
SUBSCRIBE, și cu unPSUBSCRIBEcare 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.