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.