retur DKR

Retur Dkr



Redis heltalsmanipulation

Strengtypen er den mest fundamentale datatype, som Redis tilbyder. Redis-strenge er i stand til at gemme tekster, serialiserede JSON-objekter, billeder, lyd og endda numeriske værdier. I denne guide vil vi fokusere på de numeriske værdier og manipulation af heltal. Redis understøtter ikke de separate heltalsdatatyper til at indeholde de numeriske data. Hvis en Redis-nøgle indeholder en streng, der kan repræsenteres som et heltal, kan Redis fortolke talværdierne som base-10 64-bit signerede heltal.


Talmanipulation er en yderst nyttig funktion at have i enhver database. Redis tilbyder flere nyttige operationer til at arbejde på heltalstyper såsom INCR, DECR, INCRBY osv. I denne vejledning er DECR-kommandoen, der fungerer på heltalstyper, forklaret i detaljer.







DECR-kommandoen

DECR-kommandoen introduceres for at formindske en talværdi, der er lagret ved en given nøgle, med én. Dette virker kun på strengværdier, der kan repræsenteres som et base-10 64-bit heltal. DECR-kommandoen kaster en fejl for ikke-strengværdier eller strengværdier, der ikke kan repræsenteres som heltal.



Følgende er syntaksen for DECR-kommandoen:



DECR nøgle


Nøgle: Nøglen, der indeholder strengværdien.





DECR-kommandoen returnerer det resulterende fortegnede heltal efter dekrementeringsoperationen. Hvis den angivne nøgle ikke eksisterer, sætter kommandoen værdien til 0 og formindsker den derefter med én. Der opstår også en fejl, når værdien er en ikke-streng eller ikke kan repræsenteres som et 64-bit heltal med fortegn. Denne kommando fungerer på konstant tidskompleksitet(O(1)), som er ekstremt hurtig.

Use Case – Formindsk spillerens helbred i et onlinespil

Lad os antage et onlinespil, hvor hver spillers helbred øges med én, når en mediepakke afsløres. Tilsvarende falder helbredet med én, hvis spilleren falder eller bliver ramt af en anden spiller.



Den ideelle kandidat til at gemme en spillers helbred er en Redis-strengtype, hvor vi kan gemme sundheden som et heltal. Lad os skabe en nøgle health:playerID:1 og sæt dens værdi til 10. Vi kan bruge kommandoen SET som følger:

sæt sundhed:spiller-id: 1 10



Vi kan bruge GET-kommandoen til at bekræfte den værdi, der er gemt på health:playerID:1.

få sundhed:spiller-id: 1



Lad os sige, at spilleren med ID 1 bliver ramt, og helbredet skal reduceres med én. DECR-kommandoen kan bruges som følger:

decr health:playerID: 1


Som forventet udskriver DECR-kommandoen den opdaterede værdi efter reduktionsoperationen som vist i følgende figur:


Vi kan også inspicere værdien gemt ved nøgle health:playerID:1 med GET-kommandoen.

få sundhed:spiller-id: 1



Som forventet faldt værdien med én.

DECR-operatøren er også gyldig med negative tal. Lad os gemme en ny negativ numerisk værdi ved nøglen negativ:værdi1 .

sæt negativ:værdi1 -3


Vi kan inspicere værdien ved at bruge kommandoen GET som følger:

få negativ:værdi1



Den følgende kommando viser, hvordan DECR-kommandoen bruges på tasten negativ:værdi1:

decr negativ:værdi1


DECR-kommandoen på ikke-heltalsværdier

Der er nogle edge-tilfælde, når vi forsøger at bruge DECR-kommandoen på en Redis-nøgle, der indeholder en ikke-strengdatatype eller en streng, der ikke kan repræsenteres som et heltal. DECR-kommandoen kaster en fejl i disse tilfælde som vist i følgende eksempel:

sæt notAnIntergerVal Hej


'Hej' er en tekst, der ikke kan konverteres til et signeret heltal. Så DECR-kommandoen rejser en fejl, hvis vi kalder den mod denne nøgle.

decr notAnIntergerVal


DECR-kommandoen på ikke-eksisterende nøgler

I nogle tilfælde kan du kalde DECR-kommandoen på en tast, der ikke findes i Redis-datalageret. Så kommandoen opretter den angivne nøgle og indstiller dens værdi til heltal 0. Samtidig reduceres værdien med én.

decr ikke-eksisterende-nøgle


Som forventet er outputtet -1.


Generelt er DECR-kommandoen meget nyttig til at implementere tællerne i applikationer med lav latens.

Konklusion

Sammenfattende er DECR en af ​​de kommandoer, der fungerer på numeriske værdier, der er gemt på en given Redis-tast. Redis understøtter ikke en separat heltalsdatatype. Så strengtypen bruges også til at holde de numeriske værdier. Som undersøgt, hvis strengværdien kan repræsenteres som et 64-bit fortegnet heltal, kan DECR-kommandoen bruges til at formindske dens værdi. Vigtigst af alt, det opererer på konstant tidskompleksitet. DECR-kommandoen er også meget brugt til at implementere tællerne.