Ce face INCR / INCRBY / DECR
INCR adaugă 1 la valoarea numerică a unei chei, iar DECR scade 1. INCRBY și DECRBY adaugă sau scad un număr întreg oarecare. Dacă cheia nu există, Redis pornește de la 0.
Operațiile sunt atomice: chiar dacă o mie de clienți cresc același contor în același timp, nu se pierde nicio incrementare. Valoarea trebuie să fie un întreg pe 64 de biți cu semn. Pentru zecimale există INCRBYFLOAT (din Redis 2.6.0).
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia cu valoarea numerică. |
increment / decrement |
Cât se adaugă sau se scade (întreg; la INCRBYFLOAT poate fi zecimal sau negativ). |
Ce returnează
Valoarea nouă, ca (integer). INCRBYFLOAT întoarce valoarea nouă ca șir (de exemplu "10.6").
Exemple
Exemplul 1: Contor de vizite pe o pagină
Cheia nu există la început, deci primul INCR întoarce 1.
INCR vizite:pagina:acasa
INCR vizite:pagina:acasa
INCRBY vizite:pagina:acasa 10
Ieșire în redis-cli
127.0.0.1:6379> INCR vizite:pagina:acasa
(integer) 1
127.0.0.1:6379> INCR vizite:pagina:acasa
(integer) 2
127.0.0.1:6379> INCRBY vizite:pagina:acasa 10
(integer) 12
Exemplul 2: Stoc care scade la fiecare vânzare
DECRBY scade mai multe bucăți deodată. Pe o valoare care nu e număr, comanda dă eroare.
SET stoc:caiet 50
DECR stoc:caiet
DECRBY stoc:caiet 9
SET stoc:pix multe
INCR stoc:pix
Ieșire în redis-cli
127.0.0.1:6379> SET stoc:caiet 50
OK
127.0.0.1:6379> DECR stoc:caiet
(integer) 49
127.0.0.1:6379> DECRBY stoc:caiet 9
(integer) 40
127.0.0.1:6379> SET stoc:pix multe
OK
127.0.0.1:6379> INCR stoc:pix
(error) ERR value is not an integer or out of range
Exemplul 3: Sold în lei cu zecimale
INCRBYFLOAT lucrează cu numere zecimale și întoarce rezultatul ca șir.
SET sold:ana 10.50
INCRBYFLOAT sold:ana 0.1
Ieșire în redis-cli
127.0.0.1:6379> SET sold:ana 10.50
OK
127.0.0.1:6379> INCRBYFLOAT sold:ana 0.1
"10.6"
Greșeli frecvente
INCRnu verifică limite: stocul poate ajunge negativ. Dacă ai nevoie de „nu sub zero”, folosește un script Lua sau o tranzacție cuWATCH.INCRnu modifică expirarea cheii: dacă vrei un contor pe fereastră de timp, seteazăEXPIREseparat după primulINCR.- Pentru bani, multe aplicații salvează sumele în bani (întregi) și folosesc
INCRBY, ca să evite rotunjirile numerelor zecimale.
Comenzi înrudite
SET: Salvează o valoare text la o cheie, opțional cu expirare (EX/PX), doar dacă nu există (NX) sau doar dacă există (XX).HINCRBY / HINCRBYFLOAT: Crește sau scade atomic un câmp numeric dintr-un hash, de exemplu stocul sau numărul de comenzi ale unui client.EXPIRE / PEXPIRE: Setează după câte secunde (EXPIRE) sau milisecunde (PEXPIRE) se șterge automat o cheie.ZINCRBY: Crește (sau scade) atomic scorul unui membru dintr-un set sortat; creează membrul dacă lipsește.
Întrebări & Exemple de Cod:
INCR / INCRBY / DECRAi o nelămurire despre utilizarea comenzii
INCR / INCRBY / DECRsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.