Ce face HINCRBY / HINCRBYFLOAT
HINCRBY adaugă increment (întreg, poate fi negativ) la valoarea unui câmp. Dacă hash-ul sau câmpul nu există, pornește de la 0.
HINCRBYFLOAT (din Redis 2.6.0) face același lucru cu numere zecimale. Ambele sunt atomice, deci mai mulți clienți pot modifica același câmp în același timp fără să piardă actualizări.
Parametri
| Parametru | Descriere |
|---|---|
field |
Câmpul numeric. |
increment |
Cât se adaugă (negativ pentru scădere). |
Ce returnează
HINCRBY: valoarea nouă ca (integer). HINCRBYFLOAT: valoarea nouă ca șir.
Exemple
Exemplul 1: Statistici de client
Câmpul comenzi nu exista, deci pornește de la 0.
HINCRBY client:ana comenzi 1
HINCRBY client:ana comenzi 1
HINCRBYFLOAT client:ana total_lei 149.90
Ieșire în redis-cli
127.0.0.1:6379> HINCRBY client:ana comenzi 1
(integer) 1
127.0.0.1:6379> HINCRBY client:ana comenzi 1
(integer) 2
127.0.0.1:6379> HINCRBYFLOAT client:ana total_lei 149.90
"149.9"
Exemplul 2: Scăderea stocului
Un increment negativ scade valoarea. Pe un câmp care nu e număr primești eroare.
HSET produs:caiet stoc 40 nume Caiet
HINCRBY produs:caiet stoc -3
HINCRBY produs:caiet nume 1
Ieșire în redis-cli
127.0.0.1:6379> HSET produs:caiet stoc 40 nume Caiet
(integer) 2
127.0.0.1:6379> HINCRBY produs:caiet stoc -3
(integer) 37
127.0.0.1:6379> HINCRBY produs:caiet nume 1
(error) ERR hash value is not an integer
Greșeli frecvente
- Nu există
HDECRBY: foloseșteHINCRBYcu valoare negativă. HINCRBYnu împiedică valorile negative; verificarea „stoc ≥ 0” cere un script Lua sau o tranzacție.
Comenzi înrudite
HSET: Scrie unul sau mai multe câmpuri într-un hash (un obiect cu perechi câmp–valoare), creând hash-ul dacă lipsește.INCR / INCRBY / DECR: Crește sau scade atomic un număr salvat într-o cheie; ideal pentru contoare de vizite, stocuri și ID-uri.ZINCRBY: Crește (sau scade) atomic scorul unui membru dintr-un set sortat; creează membrul dacă lipsește.