Redis DECR

Redis DECR

Redis heltallmanipulering

Strengtypen 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 guiden vil vi fokusere på de numeriske verdiene og manipulering av heltall. Redis støtter ikke de separate heltalldatatypene for å inneholde 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-bits signerte heltall.


Antallmanipulering er en ekstremt nyttig funksjon å ha i en hvilken som helst database. Redis tilbyr flere nyttige operasjoner for å jobbe med heltalltyper som incr, DECR, incrby, etc. I denne guiden blir DECR -kommandoen som opererer på heltalltyper forklart i detalj.

DECR -kommandoen

DECR -kommandoen blir introdusert for å redusere en tallverdi som er lagret på en gitt nøkkel av en. 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 syntaks for DECR -kommandoen:

DEDR -nøkkel


Nøkkel: Nøkkelen som holder strengverdien.

DECR -kommandoen returnerer det resulterende signerte heltallet etter reduksjonsoperasjonen. Hvis den spesifiserte tasten ikke eksisterer, setter kommandoen verdien til 0 og deretter reduserer den med en. En feil blir også kastet når verdien er en ikke-streng eller ikke kan representeres som et 64-bits signert heltall. Denne kommandoen fungerer på konstant tidskompleksitet (O (1)) som er ekstremt rask.

Bruk sak - Decrement Player Health i et online spill

La oss anta et online spill der hver spillers helse økes av en når en medi-pack blir avslørt. Tilsvarende avtar helsen med en hvis spilleren faller eller blir truffet av en annen spiller.

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

Sett helse: PlayerId: 1 10



Vi kan bruke GET -kommandoen for å bekrefte verdien som er lagret på Helse: PlayerId: 1.

Få helse: PlayerId: 1



La oss si at spilleren med ID 1 blir rammet og helsen bør reduseres med en. DECR -kommandoen kan brukes som følger:

DEDR HELSE: PlayerId: 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 tasten Helse: PlayerId: 1 Med Get -kommandoen.

Få helse: PlayerId: 1



Som forventet reduserte verdien med en.

REDR -operatøren er også gyldig med negative tall. La oss lagre en ny negativ numerisk verdi på nøkkelen Negativ: Verdi1.

Sett negativt: verdi1 -3


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

Bli negativ: Verdi1



Følgende kommando viser hvordan DECR -kommandoen brukes på nøkkelen Negativ: Verdi1:

DEDR -negativ: Verdi1


DECR-kommandoen på ikke-heltallsverdier

Det er noen kantsaker når vi prøver å bruke DECR-kommandoen på en Redis-nøkkel som har en ikke-streng datatype eller en streng som ikke kan representeres som et heltall. DECR -kommandoen kaster en feil i disse tilfellene som vist i følgende eksempel:

Sett NotanintergerVal hei


"Hello" er en tekst som ikke kan konverteres til et signert heltall. Så DECR -kommandoen reiser en feil hvis vi ringer den mot denne nøkkelen.

DECR NOTANINTERGERVAL


DECR-kommandoen på ikke-eksisterende nøkler

I noen tilfeller kan du ringe DECR -kommandoen på en nøkkel som ikke eksisterer i Redis Data Store. Så kommandoen oppretter den spesifiserte tasten og setter verdien til Heltall 0. Samtidig reduseres verdien med en.

DECR-ikke-eksisterende nøkkel


Som forventet er utgangen -1.


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

Konklusjon

Oppsummert er DEDR en av kommandoene som fungerer på numeriske verdier som er lagret på en gitt Redis -nøkkel. Redis støtter ikke en egen heltalldatatype. Så strengtypen brukes til å holde de numeriske verdiene også. Som undersøkt, hvis strengverdien kan representeres som et 64-bits signert heltall, kan DECR-kommandoen brukes til å redusere verdien. Det viktigste er at det fungerer på konstant tidskompleksitet. Dessuten er DECR -kommandoen mye brukt til å implementere tellere.