tagasta DECR

Tagasta Decr



Redis Integer Manipulation

Stringitüüp on kõige olulisem andmetüüp, mida Redis pakub. Redise stringid on võimelised salvestama tekste, järjestatud JSON-objekte, pilte, heli ja isegi arvväärtusi. Selles juhendis keskendume arvväärtustele ja täisarvudega manipuleerimisele. Redis ei toeta arvandmete hoidmiseks eraldi täisarvude andmetüüpe. Kui Redise võti sisaldab stringi, mida saab esitada täisarvuna, saab Redis tõlgendada arvuväärtusi 10 64-bitise märgiga täisarvuna.


Numbritega manipuleerimine on igas andmebaasis äärmiselt kasulik funktsioon. Redis pakub mitmeid kasulikke toiminguid täisarvutüüpidega töötamiseks, nagu INCR, DECR, INCRBY jne. Selles juhendis kirjeldatakse üksikasjalikult käsku DECR, mis töötab täisarvu tüüpidega.







DECR-i käsk

Käsk DECR võetakse kasutusele antud võtmele salvestatud arvu väärtuse vähendamiseks ühe võrra. See toimib ainult stringiväärtuste puhul, mida saab esitada 10 64-bitise täisarvuna. Käsk DECR annab tõrke mittestringi väärtustele või stringiväärtustele, mida ei saa esitada täisarvudena.



Järgmine on käsu DECR süntaks:



DECR võti


Võti: Võti, mis hoiab stringi väärtust.





Käsk DECR tagastab pärast kahandamistoimingut saadud märgiga täisarvu. Kui määratud võtit pole olemas, määrab käsk väärtuseks 0 ja seejärel vähendab seda ühe võrra. Samuti kuvatakse tõrge, kui väärtus on mittestring või seda ei saa esitada 64-bitise märgiga täisarvuna. See käsk töötab konstantse aja keerukusega (O(1)), mis on äärmiselt kiire.

Kasutusjuhtum – vähendage mängija tervist võrgumängus

Oletame, et võrgumäng, kus iga mängija tervis paraneb ühe võrra, kui medi-pack ilmub. Samamoodi väheneb tervis ühe võrra, kui mängija kukub või saab teise mängija löögi.



Ideaalne kandidaat mängija tervise salvestamiseks on Redise stringitüüp, kuhu saame tervise salvestada täisarvuna. Loome võtme tervis:mängija ID:1 ja määrake selle väärtuseks 10. Käsku SET saame kasutada järgmiselt:

seatud tervis:mängija ID: 1 10



Saame kasutada käsku GET, et kontrollida aadressil salvestatud väärtust tervis:mängija ID:1.

saada tervist:playerID: 1



Oletame, et ID 1 mängija saab löögi ja tervist tuleks ühe võrra vähendada. Käsku DECR saab kasutada järgmiselt:

decr health:playerID: 1


Nagu oodatud, prindib käsk DECR värskendatud väärtuse pärast kahandamistoimingut, nagu on näidatud järgmisel joonisel:


Samuti saame kontrollida võtmele salvestatud väärtust tervis:mängija ID:1 käsuga GET.

saada tervist:playerID: 1



Väärtus langes ootuspäraselt ühe võrra.

Operaator DECR kehtib ka negatiivsete arvude korral. Salvestagem klahvile uus negatiivne arvväärtus negatiivne:väärtus1 .

seatud negatiivne:väärtus1 -3


Väärtust saame käsu GET abil kontrollida järgmiselt:

saada negatiivne:väärtus1



Järgmine käsk näitab, kuidas klahvil kasutatakse käsku DECR negatiivne:väärtus1:

decr negatiivne:väärtus1


DECR-i käsk mittetäisarvuliste väärtuste kohta

Mõnel juhul proovime kasutada käsku DECR Redis-klahvil, mis sisaldab mittestringi andmetüüpi või stringi, mida ei saa esitada täisarvuna. Käsk DECR annab sellistel juhtudel vea, nagu on näidatud järgmises näites:

seatud notAnIntergerVal Tere


'Tere' on tekst, mida ei saa teisendada märgiga täisarvuks. Niisiis, käsk DECR tekitab vea, kui kutsume seda selle võtme vastu.

decr notAnIntergerVal


DECR-i käsk olematute võtmete kohta

Mõnel juhul võite kutsuda DECR-käsku võtmel, mida Redise andmesalves pole. Seega loob käsk määratud võtme ja määrab selle väärtuseks täisarvu 0. Samal ajal vähendatakse väärtust ühe võrra.

decr olematu-võti


Ootuspäraselt on väljund -1.


Üldiselt on DECR-käsk väga kasulik loendurite rakendamiseks madala latentsusega rakendustes.

Järeldus

Kokkuvõtteks võib öelda, et DECR on üks käskudest, mis töötavad numbriliste väärtustega, mis on salvestatud antud Redis-klahvile. Redis ei toeta eraldi täisarvu andmetüüpi. Seega kasutatakse stringitüüpi ka arvväärtuste hoidmiseks. Nagu uuritud, kui stringi väärtust saab esitada 64-bitise märgiga täisarvuna, saab selle väärtuse vähendamiseks kasutada käsku DECR. Kõige tähtsam on see, et see töötab pideva aja keerukusega. Samuti kasutatakse loendurite rakendamiseks laialdaselt käsku DECR.