Ce face ZADD
Un set sortat (sorted set, tipul zset) ține membri unici, fiecare cu un scor numeric, ordonați mereu după scor. ZADD adaugă membri noi sau schimbă scorul celor existenți. Atenție la ordine: întâi scorul, apoi membrul.
Opțiuni: NX doar adaugă (nu actualizează), XX doar actualizează (nu adaugă), GT/LT actualizează doar dacă noul scor e mai mare/mai mic (Redis 6.2+), CH numără și membrii modificați, iar INCR crește scorul ca ZINCRBY. NX, XX, CH și INCR există din Redis 3.0.2.
Parametri
| Parametru | Descriere |
|---|---|
score member ... |
Perechile scor–membru (scorul este un număr cu virgulă mobilă). |
NX / XX |
Doar membri noi / doar membri existenți. |
GT / LT |
Actualizează doar dacă scorul nou e mai mare / mai mic. |
CH |
Răspunsul numără membrii adăugați ȘI cei cu scor schimbat. |
INCR |
Adaugă scorul la cel existent; acceptă o singură pereche. |
Ce returnează
Un (integer): membri adăugați (cu CH: adăugați sau modificați). Cu INCR: scorul nou ca șir, sau (nil) dacă o condiție a oprit operația.
Exemple
Exemplul 1: Clasamentul unui joc
La a doua comandă, Dan există deja (scorul i se schimbă), iar Elena e nouă: răspunsul este 1.
ZADD clasament 1520 ana 1380 dan 1610 ioana
ZADD clasament 1450 dan 1200 elena
ZADD clasament CH 1500 dan
Ieșire în redis-cli
127.0.0.1:6379> ZADD clasament 1520 ana 1380 dan 1610 ioana
(integer) 3
127.0.0.1:6379> ZADD clasament 1450 dan 1200 elena
(integer) 1
127.0.0.1:6379> ZADD clasament CH 1500 dan
(integer) 1
Exemplul 2: Doar recorduri: GT
Cu GT, un scor mai mic nu suprascrie recordul. INCR întoarce scorul nou.
ZADD record GT 980 ana
ZADD record GT 900 ana
ZSCORE record ana
ZADD record INCR 20 ana
Ieșire în redis-cli
127.0.0.1:6379> ZADD record GT 980 ana
(integer) 1
127.0.0.1:6379> ZADD record GT 900 ana
(integer) 0
127.0.0.1:6379> ZSCORE record ana
"980"
127.0.0.1:6379> ZADD record INCR 20 ana
"1000"
Greșeli frecvente
- Ordinea argumentelor este
score member, nu invers:ZADD clasament ana 1520dă eroareaERR value is not a valid float. - Rezultatul 0 nu înseamnă că nu s-a întâmplat nimic: fără
CH, actualizările de scor nu se numără. - Membrii cu același scor sunt ordonați alfabetic (lexicografic), nu după momentul adăugării.
Comenzi înrudite
ZRANGE: Întoarce membrii unui set sortat după poziție sau după scor (BYSCORE), crescător sau descrescător (REV), cu paginare (LIMIT).ZINCRBY: Crește (sau scade) atomic scorul unui membru dintr-un set sortat; creează membrul dacă lipsește.ZSCORE / ZMSCORE: Citește scorul unui membru dintr-un set sortat; ZMSCORE citește scorurile mai multor membri.ZRANK / ZREVRANK: Întoarce poziția (rangul, de la 0) unui membru într-un set sortat, crescător (ZRANK) sau descrescător (ZREVRANK).SADD: Adaugă unul sau mai mulți membri într-un set (colecție fără duplicate); membrii existenți sunt ignorați.