Ce face XREAD
XREAD întoarce intrările cu ID mai mare decât cel dat pentru fiecare stream. Cu ID-ul 0 citești de la început; cu $ (împreună cu BLOCK) aștepți doar intrările care vin de acum înainte.
Cuvântul STREAMS trebuie să fie ultimul: după el vin întâi toate cheile, apoi toate ID-urile, în aceeași ordine. Spre deosebire de Pub/Sub, mesajele rămân în stream, deci un client care a fost deconectat poate continua de la ultimul ID văzut.
Parametri
| Parametru | Descriere |
|---|---|
COUNT count |
Maximum de intrări întoarse pe stream. |
BLOCK milliseconds |
Așteaptă până la atâtea milisecunde dacă nu sunt date (0 = la nesfârșit). |
STREAMS key ... id ... |
Stream-urile și, pentru fiecare, ID-ul după care se citește ($ = doar intrări noi). |
Ce returnează
O listă cu câte un element pe stream: numele lui și intrările (ID + câmpuri). (nil) dacă a expirat BLOCK.
Exemple
Exemplul 1: Citirea de la început
COUNT 1 întoarce doar prima intrare; pentru următoarea, reiei de la ID-ul primit.
XREAD COUNT 1 STREAMS comenzi 0
XREAD COUNT 1 STREAMS comenzi 1792915200000-0
Ieșire în redis-cli
127.0.0.1:6379> XREAD COUNT 1 STREAMS comenzi 0
1) 1) "comenzi"
2) 1) 1) "1792915200000-0"
2) 1) "client"
2) "Ana"
3) "oras"
4) "Iasi"
5) "total"
6) "120"
127.0.0.1:6379> XREAD COUNT 1 STREAMS comenzi 1792915200000-0
1) 1) "comenzi"
2) 1) 1) "1792915260000-0"
2) 1) "client"
2) "Dan"
3) "oras"
4) "Cluj"
5) "total"
6) "85"
Exemplul 2: Așteptarea unor comenzi noi
Cu $ și BLOCK 5000, clientul așteaptă 5 secunde intrări noi. Nu a venit nimic, deci răspunsul este (nil).
XREAD BLOCK 5000 STREAMS comenzi $
Ieșire în redis-cli
127.0.0.1:6379> XREAD BLOCK 5000 STREAMS comenzi $
(nil)
(5.02s)
Greșeli frecvente
- Nu folosi
$într-o buclă: la fiecare apel ai pierde intrările venite între două citiri. Folosește$doar prima dată, apoi ultimul ID primit. - Dacă mai mulți workeri trebuie să-și împartă mesajele (fiecare mesaj procesat o singură dată), folosește grupuri de consumatori cu
XREADGROUP.
Comenzi înrudite
XADD: Adaugă un eveniment (o intrare cu câmpuri și valori) la finalul unui stream Redis și întoarce ID-ul lui.XRANGE / XREVRANGE: Citește intrările unui stream dintre două ID-uri, în ordine crescătoare (XRANGE) sau descrescătoare (XREVRANGE).XREADGROUP: Citește mesaje dintr-un stream ca membru al unui grup de consumatori; fiecare mesaj ajunge la un singur consumator.SUBSCRIBE / PSUBSCRIBE: Abonează clientul la unul sau mai multe canale Pub/Sub (SUBSCRIBE) sau la canale după un tipar (PSUBSCRIBE).