retur DKR

Retur Dkr



Redis heltallsmanipulasjon

Strengetypen er den mest grunnleggende datatypen som Redis tilbyr. Redis-strenger er i stand til å lagre tekster, serialiserte JSON-objekter, bilder, lyd og til og med numeriske verdier. I denne veiledningen vil vi fokusere på numeriske verdier og manipulering av heltall. Redis støtter ikke de separate heltallsdatatypene for å holde de numeriske dataene. Hvis en Redis-nøkkel inneholder en streng som kan representeres som et heltall, kan Redis tolke tallverdiene som base-10 64-biters signerte heltall.


Tallmanipulering er en ekstremt nyttig funksjon å ha i enhver database. Redis tilbyr flere nyttige operasjoner for å arbeide med heltallstyper som INCR, DECR, INCRBY, etc. I denne veiledningen er DECR-kommandoen som opererer på heltallstyper forklart i detalj.







DECR-kommandoen

DECR-kommandoen introduseres for å redusere en tallverdi som er lagret ved en gitt nøkkel med én. Dette fungerer bare på strengverdier som kan representeres som et base-10 64-bits heltall. DECR-kommandoen kaster en feil for ikke-strengverdier eller strengverdier som ikke kan representeres som heltall.



Følgende er syntaksen til DECR-kommandoen:



DECR-tast


Nøkkel: Nøkkelen som inneholder strengverdien.





DECR-kommandoen returnerer det resulterende fortegnede heltall etter dekrementeringsoperasjonen. Hvis den angitte nøkkelen ikke eksisterer, setter kommandoen verdien til 0 og reduserer den deretter med én. Det oppstår også en feil når verdien er en ikke-streng eller ikke kan representeres som et 64-bits heltall med fortegn. Denne kommandoen opererer på konstant tidskompleksitet(O(1)), som er ekstremt rask.

Use Case – Reduser spillerens helse i et nettspill

La oss anta et nettspill der hver spillers helse økes med én når en mediepakke avsløres. Tilsvarende synker helsen med én dersom spilleren faller eller blir truffet av en annen spiller.



Den ideelle kandidaten til å lagre en spillers helse er en Redis-strengtype der vi kan lagre helsen som et heltall. La oss lage en nøkkel helse:spillerID:1 og sett verdien til 10. Vi kan bruke SET-kommandoen som følger:

sett helse:spiller-ID: 1 10



Vi kan bruke GET-kommandoen til å bekrefte verdien som er lagret på helse:spillerID:1.

få helse:spillerID: 1



La oss si at spilleren med ID 1 blir truffet og helsen skal reduseres med én. DECR-kommandoen kan brukes som følger:

decr helse:spillerID: 1


Som forventet skriver DECR-kommandoen ut den oppdaterte verdien etter reduksjonsoperasjonen som vist i følgende figur:


Vi kan også inspisere verdien som er lagret ved nøkkel helse:spillerID:1 med GET-kommandoen.

få helse:spillerID: 1



Som forventet sank verdien med én.

DECR-operatøren er gyldig med negative tall også. La oss lagre en ny negativ numerisk verdi ved nøkkelen negativ:verdi1 .

sett negativ:verdi1 -3


Vi kan inspisere verdien ved å bruke GET-kommandoen som følger:

få negativ:verdi1



Følgende kommando viser hvordan DECR-kommandoen brukes på tasten negativ:verdi1:

decr negative:value1


DECR-kommandoen på ikke-heltallsverdier

Det er noen kanttilfeller når vi prøver å bruke DECR-kommandoen på en Redis-tast som inneholder en ikke-strengdatatype eller en streng som ikke kan representeres som et heltall. DECR-kommandoen gir en feil i disse tilfellene som vist i følgende eksempel:

sett notAnIntergerVal Hei


'Hei' er en tekst som ikke kan konverteres til et signert heltall. Så, DECR-kommandoen gir en feil hvis vi kaller den mot denne nøkkelen.

decr notAnIntergerVal


DECR-kommandoen på ikke-eksisterende nøkler

I noen tilfeller kan du ringe DECR-kommandoen på en tast som ikke finnes i Redis-datalageret. Så, kommandoen oppretter den angitte nøkkelen og setter verdien til heltall 0. Samtidig reduseres verdien med én.

decr ikke-eksisterende-nøkkel


Som forventet er utgangen -1.


Totalt sett er DECR-kommandoen veldig nyttig for å implementere tellerne i applikasjoner med lav latens.

Konklusjon

Oppsummert er DECR en av kommandoene som opererer på numeriske verdier som er lagret på en gitt Redis-tast. Redis støtter ikke en separat heltallsdatatype. Så strengtypen brukes også til å holde de numeriske verdiene. Som undersøkt, hvis strengverdien kan representeres som et 64-bits fortegnet heltall, kan DECR-kommandoen brukes til å redusere verdien. Det viktigste er at den opererer på konstant tidskompleksitet. DECR-kommandoen er også mye brukt for å implementere tellerne.