HINCRBY / HINCRBYFLOAT în Redis & In-Memory Data Store

Crește sau scade atomic un câmp numeric dintr-un hash, de exemplu stocul sau numărul de comenzi ale unui client.

Sintaxă comandă
HINCRBY key field increment
HINCRBYFLOAT key field increment

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ște HINCRBY cu valoare negativă.
  • HINCRBY nu î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.