povratak DECR

Povratak Decr



Redis Integer Manipulacija

Tip niza je najosnovniji tip podataka koji nudi Redis. Redis nizovi mogu pohranjivati ​​tekstove, serijalizirane JSON objekte, slike, zvuk, pa čak i numeričke vrijednosti. U ovom vodiču usredotočit ćemo se na numeričke vrijednosti i manipulaciju cijelim brojevima. Redis ne podržava zasebne tipove cjelobrojnih podataka za držanje numeričkih podataka. Ako Redis ključ sadrži niz koji se može predstaviti kao cijeli broj, Redis može protumačiti brojčane vrijednosti kao 64-bitne cijele brojeve s predznakom baze 10.


Manipulacija brojevima izuzetno je korisna značajka u svakoj bazi podataka. Redis nudi nekoliko korisnih operacija za rad na cjelobrojnim tipovima kao što su INCR, DECR, INCRBY, itd. U ovom vodiču detaljno je objašnjena naredba DECR koja radi na cjelobrojnim tipovima.







Zapovjedništvo DECR-a

Naredba DECR uvedena je za smanjenje brojčane vrijednosti koja je pohranjena na danom ključu za jedan. Ovo funkcionira samo na vrijednostima niza koje se mogu predstaviti kao 64-bitni cijeli broj baze 10. Naredba DECR izbacuje pogrešku za vrijednosti koje nisu string ili vrijednosti niza koje se ne mogu predstaviti kao cijeli brojevi.



Slijedi sintaksa naredbe DECR:



Tipka DECR


Ključ: Ključ koji sadrži vrijednost niza.





Naredba DECR vraća rezultirajući cijeli broj s predznakom nakon operacije smanjivanja. Ako navedeni ključ ne postoji, naredba postavlja vrijednost na 0 i zatim je smanjuje za jedan. Također, javlja se pogreška kada vrijednost nije niz ili se ne može predstaviti kao 64-bitni cijeli broj s predznakom. Ova naredba radi na konstantnoj vremenskoj složenosti (O(1)) što je iznimno brzo.

Slučaj upotrebe – smanjenje zdravlja igrača u online igri

Pretpostavimo mrežnu igru ​​u kojoj se zdravlje svakog igrača povećava za jedan kada se otkrije medi-pack. Slično, zdravlje se smanjuje za jedan ako igrač padne ili ga drugi igrač udari.



Idealan kandidat za pohranjivanje zdravlja igrača je vrsta niza Redis gdje možemo pohraniti zdravlje kao cijeli broj. Kreirajmo ključ zdravlje:ID igrača:1 i postavite njegovu vrijednost na 10. Naredbu SET možemo koristiti na sljedeći način:

postaviti zdravlje:ID igrača: 1 10



Možemo koristiti naredbu GET za provjeru vrijednosti pohranjene na zdravlje:ID igrača:1.

dobiti zdravlje:playerID: 1



Recimo da igrač s ID-om 1 bude pogođen i zdravlje bi se trebalo smanjiti za jedan. Naredba DECR može se koristiti na sljedeći način:

dekr zdravlje:playerID: 1


Kao što se i očekivalo, naredba DECR ispisuje ažuriranu vrijednost nakon operacije smanjenja kao što je prikazano na sljedećoj slici:


Također, možemo provjeriti vrijednost pohranjenu na ključu zdravlje:ID igrača:1 naredbom GET.

dobiti zdravlje:playerID: 1



Očekivano, vrijednost se smanjila za jedan.

Operator DECR vrijedi i s negativnim brojevima. Pohranimo novu negativnu brojčanu vrijednost na ključ negativno:vrijednost1 .

postaviti negativno:vrijednost1 -3


Vrijednost možemo provjeriti pomoću naredbe GET na sljedeći način:

dobiti negativno:vrijednost1



Sljedeća naredba pokazuje kako se naredba DECR koristi na ključu negativno:vrijednost1:

dekr negativno:vrijednost1


Naredba DECR za vrijednosti koje nisu cijeli brojevi

Postoje neki rubni slučajevi kada pokušavamo upotrijebiti naredbu DECR na Redis ključu koji sadrži tip podataka koji nije string ili niz koji se ne može predstaviti kao cijeli broj. Naredba DECR izbacuje pogrešku u tim slučajevima kao što je prikazano u sljedećem primjeru:

postaviti notAnIntergerVal Pozdrav


'Zdravo' je tekst koji se ne može pretvoriti u predpisani cijeli broj. Dakle, naredba DECR javlja pogrešku ako je pozovemo protiv ovog ključa.

decr notAnIntergerVal


DECR naredba na nepostojećim ključevima

U nekim slučajevima možete pozvati naredbu DECR na ključu koji ne postoji u Redis pohrani podataka. Dakle, naredba kreira navedeni ključ i postavlja njegovu vrijednost na cijeli broj 0. U isto vrijeme, vrijednost se smanjuje za jedan.

decr nepostojeći ključ


Kao što je i očekivano, izlaz je -1.


Općenito, DECR naredba je vrlo korisna za implementaciju brojača u aplikacijama niske latencije.

Zaključak

Ukratko, DECR je jedna od naredbi koje rade na numeričkim vrijednostima koje su pohranjene na određenom Redis ključu. Redis ne podržava zaseban tip podataka cijelog broja. Dakle, vrsta niza koristi se i za držanje numeričkih vrijednosti. Kao što je ispitano, ako se vrijednost niza može predstaviti kao 64-bitni cijeli broj s predznakom, naredba DECR može se koristiti za smanjenje njene vrijednosti. Što je najvažnije, radi na konstantnoj vremenskoj složenosti. Također, DECR naredba se široko koristi za implementaciju brojača.