Redis getEx

Redis getEx
Redis er en nøkkelverdi-databutikk som brukes som en cache i minnet, database, tidsserie, strømmotor, meldingsmegler osv. Siden Redis Data Store bruker et enkelt parformat for nøkkelverdi for å holde data, er det veldig minneffektivt. I tillegg er spørringshastigheten veldig høy med lavtidskompleksiteter som O (1) og O (log (N)). Redis -nøkler kan inneholde forskjellige datastrukturer, for eksempel strenger, sett, hashes, sorterte sett og lister.

Vanligvis brukes Get and Set-kommandoer til å lagre og hente inn verdier av strengtype som er lagret på en gitt Redis-tast. Disse to kommandoene fungerer med konstant tidskompleksitet.

I tillegg er GetEx -kommandoen tilgjengelig for å lese strengverdier som er lagret på en gitt tast. Men denne kommandoen er også assosiert med en parallell skriveoperasjon. Denne guiden vil fokusere på GetEx -kommando -syntaks, dens alternativer og bruke saker.

TTL av en Redis -nøkkel

Tiden til å leve (TTL) verdi er utløpstiden for et gitt stykke data. Vanligvis kan en TTL være assosiert med databaserapper. En timeout kan også settes med redis -nøkler. Så en Redis -klient kan sjekke de resterende sekundene at en gitt nøkkel vil være tilgjengelig i datalageret. Redis tilbyr en TTL -kommando for å sjekke tiden for å leve verdien av en gitt nøkkel. Hvis ingen timeout er assosiert med en spesifisert nøkkel, returnerer TTL -kommandoen -1. Vi bruker TTL -kommandoen i de neste seksjonene for å sjekke den gjenværende tiden for en gitt nøkkel.

GetEx -kommandoen

Som fremhevet er GetEx -kommandoen mer lik Get -kommandoen, bortsett fra at den kan brukes til å angi en utløpstid for den spesifiserte tasten. Videre kan et kommandoalternativ fjerne en tidsavbruddsverdi fra en gitt nøkkel. GetEx -kommando -syntaks er som følger:

GetEx Key [EX Timeout_in_seconds | PX timeout_in_milliseconds | Exat timeout_in_unix-time-sekunder | PXAT TIMEOUT_IN_UNIX-TIME-MILLISECONDS | FORTSETTE]

nøkkel: Dette er nøkkelen som peker på en strengverdi.

Følgende valgfrie argumenter kan brukes til å angi en timeout på sekunder eller millisekunder.

Eks: Dette vil sette utløpstiden på sekunder for en gitt nøkkel.

PX: Den viktigste tidsavbruddsverdien vil bli satt i millisekunder.

I tillegg kan vi spesifisere en UNIX tidsstempelverdi i sekunder eller millisekunder ved hjelp av følgende kommandoalternativer Eksat og PXAT:

Eksat: Utløpstiden vil bli satt i UNIX -tidsstempelformat, og tidsstempelet vil være på få sekunder.

PXAT: Tidsavbrudd for en gitt Redis -nøkkel vil bli satt som en UNIX -tidsstempel i millisekunder.

FORTSETTE: Ved å spesifisere dette, kan du fjerne tiden til levende verdi tilknyttet en spesifisert nøkkel.

GetEx -kommandoen returnerer verdien av den spesifiserte tasten. Denne kommandoen fungerer bare med verdier av strengtype, men ikke hasj, lister, sorterte sett osv. Hvis du spesifiserer en nøkkel tilknyttet en ikke-strengverdi, vil kommandoen returnere en feil. I tillegg, hvis nøkkelen allerede er utløpt eller ikke eksisterer, kommer kommandoen tilbake nil.

I det følgende avsnittet vil vi dekke den praktiske bruken av GetEx -kommandoen.

Bruk sak - midlertidig tilbakestillingslenke eller generering av pin kod

Et webhotellfirma leverer en passordgjenopprettingsfunksjon for registrerte brukere. Som et sikkerhetstiltak sender de en ny URL -lenke til brukeren, som vil utløpe innen 5 minutter. Selskapet har brukt Redis Data Store i lang tid og bruker Getex -kommandoen for å angi en tid til å leve verdi for en gitt bruker.

La oss anta at en bruker med User_id 1000 ber om passordgjenoppretting. Så gjenopprettingsadressen kan lagres på nøkkelen RecoveryUrl: UserID: 1000. Vi kan bruke SET -kommandoen til å lagre gjenopprettingsadressen som følger:

Set RecoveryUrl: UserID: 1000 "https: // ABC.com/recovery/userid = 1000, nøkkel = sdfiuoe3290e9rjs "

La oss sjekke om streng -URLen er riktig lagret på nøkkelen RecoveryUrl: UserID: 1000. Vi kan bruke GetEx -kommandoen som følger:

getEx RecoveryUrl: userId: 1000

Utgangen fra den forrige kommandoen vises på følgende:

Hvis vi har brukt Get -kommandoen i stedet for Getex -kommandoen, vil utdataene være den samme.

La oss bruke TTL -kommandoen for å sjekke om en utløpstid er tilknyttet denne nøkkelen.

TTL RecoveryUrl: UserID: 1000

Som forventet har -1 blitt returnert av TTL -kommandoen, noe som betyr at ingen utløpstid er tilknyttet den spesifiserte tasten.

I henhold til dette eksemplet må vertsselskapet sette en timeout på 5 minutter for gjenopprettingsadressen. Så vi vil bruke Eks Kommandoalternativ. Siden 5 minutter er 300 sekunder, kan vi konstruere GetEx -kommandoen som følger:

GetEx RecoveryUrl: UserID: 1000 EX 500

La oss kjøre TTL -kommandoen noen ganger for å inspisere den gjenværende tiden som nøkkelen vil eksistere i datalageret.

Som forventet synker tiden, og etter hvert, RecoveryUrl: UserID: 1000 Nøkkelen blir fjernet. Følgende er utgangen etter 5 minutter:

-2 er returnert av kommandoen, noe som betyr at nøkkelen er utløpt og slettet fra datalageret.

Noen ganger kan det hende du må fjerne tidsavbruddsverdien tilknyttet en gitt nøkkel. Så kan alternativet vedvarende kommandoen brukes til å slette en TTL -verdi relatert til en spesifisert nøkkel.

La oss opprette en annen eksempeltast og tilordne en strengverdi til den. I dette tilfellet vil vi spesifisere TTL -verdien i millisekunder ved å passere PX alternativ.

Sett keytotestpersist "Dette vil være utløpt innen 60 sekunder" PX 50000

Deretter vil vi sjekke den gjenværende tiden som følger:

Som forventet synker TTL. La oss ringe GetEx -kommandoen med vedvarende alternativet som følger:

getEx keytotestpersist vedvarer

Ideelt sett ville dette fjerne TTL tilknyttet denne nøkkelen. La oss inspisere TTL for nøkkelen Keytotestpersist.

TTL -kommandoen returnerte -1, noe som betyr at ingen TTL er assosiert med nøkkelen Keytotestpersist.

Tilsvarende GetEx Kommando kan brukes til å angi utløpstid for nøkler i UNIX -tidsstempel.

Konklusjon

Oppsummert kan Redis GetEx -kommandoen brukes til å hente strengverdiene som er lagret på en gitt tast som Get -kommandoen gjør. Den eneste forskjellen med GetEx -kommandoen er at den støtter innstilling og fjerning av utløpstider for en gitt nøkkel. Den støtter flere valgfrie argumenter for å spesifisere utløpstiden på sekunder, millisekunder og unix-timestamp sekunder eller millisekunder. Som diskutert gir kommandoen vedvarende alternativet for å fjerne tilknyttet TTL for en gitt nøkkel. Totalt sett opererer GetEx -kommandoen med konstant tidskompleksitet.