Redis GETEX

Redis Getex



Redis er et nøkkelverdi-datalager som brukes som en cache i minnet, database, tidsserier, strømmotor, meldingsmegler, etc. Siden Redis-datalageret bruker et enkelt nøkkelverdi-parformat for å holde data, er det veldig minne. effektiv. I tillegg er spørringshastigheten veldig høy med lav tidskompleksitet som O(1) og O(log(N)). Redis-nøkler kan inneholde forskjellige datastrukturer, for eksempel strenger, sett, hasher, sorterte sett og lister.

Vanligvis brukes GET- og SET-kommandoene til å lagre og hente strengtypeverdier lagret ved en gitt Redis-nøkkel. Disse to kommandoene opererer med konstant tidskompleksitet.







I tillegg er GETEX-kommandoen tilgjengelig for å lese strengverdier som er lagret på en gitt nøkkel. Men denne kommandoen er også assosiert med en parallell skriveoperasjon. Denne veiledningen vil fokusere på GETEX-kommandosyntaksen, dens alternativer og brukstilfeller.



TTL av en Redis Key

Time to live (TTL)-verdien er utløpstiden til et gitt datastykke. Vanligvis kan en TTL assosieres med databaserader. En timeout kan også settes med Redis-tastene. Så en Redis-klient kan sjekke de gjenværende sekundene at en gitt nøkkel vil være tilgjengelig i datalageret. Redis tilbyr en TTL-kommando for å sjekke time to live-verdien for en gitt nøkkel. Hvis ingen tidsavbrudd er knyttet til en spesifisert nøkkel, returnerer TTL-kommandoen -1. Vi vil bruke TTL-kommandoen i de neste avsnittene for å sjekke gjenværende tid 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 angitte nøkkelen. Videre kan et kommandoalternativ fjerne en tidsavbruddsverdi fra en gitt nøkkel. Syntaksen for GETEX-kommandoen er som følger:





GETEX-nøkkel [ EX timeout_in_seconds | PX timeout_in_milliseconds | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milliseconds | FORTSETTE ]

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

Følgende valgfrie argumenter kan brukes til å angi en tidsavbrudd i sekunder eller millisekunder.



EX: Dette vil angi utløpstiden i sekunder for en gitt nøkkel.

PX: Nøkkeltidsavbruddsverdien settes i millisekunder.

I tillegg kan vi spesifisere en UNIX-tidsstempelverdi i sekunder eller millisekunder ved å bruke følgende kommandoalternativer EXAT og PXAT :

EXAT: Utløpstiden vil bli satt i UNIX-tidsstempelformatet, og tidsstemplet vil være i sekunder.

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

FORTSETTE: Ved å spesifisere dette kan du fjerne time to live-verdien knyttet til en spesifisert nøkkel.

GETEX-kommandoen returnerer verdien til den angitte nøkkelen. Denne kommandoen fungerer bare med strengtypeverdier, men ikke hasher, lister, sorterte sett osv. Hvis du angir en nøkkel knyttet til en ikke-strengverdi, vil kommandoen returnere en feil. I tillegg, hvis nøkkelen allerede er utløpt eller ikke eksisterer, kommer kommandoen tilbake null.

I den følgende delen vil vi dekke den praktiske bruken av GETEX-kommandoen.

Brukstilfelle — Midlertidig tilbakestillingskobling eller generering av PIN-kode for passordgjenoppretting/OTP-er

Et webhotell tilbyr en funksjon for gjenoppretting av passord for registrerte brukere. Som et sikkerhetstiltak sender de en ny URL-lenke til brukeren, som utløper innen 5 minutter. Selskapet har brukt Redis-datalageret i lang tid og bruker GETEX-kommandoen til å sette en time to live-verdi for en gitt bruker.

La oss anta at en bruker med user_id 1000 ber om passordgjenoppretting. Så gjenopprettings-URLen kan lagres ved nøkkelen GjenopprettingsURL:BrukerID:1000 . Vi kan bruke SET-kommandoen til å lagre gjenopprettings-URLen som følger:

sett RecoveryURL:BrukerID: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

La oss sjekke om strengens URL er riktig lagret ved nøkkelen GjenopprettingsURL:BrukerID:1000. Vi kan bruke GETEX-kommandoen som følger:

getex RecoveryURL:BrukerID: 1000

Utdataene fra forrige kommando vises i følgende:

Hvis vi har brukt GET-kommandoen i stedet for GETEX-kommandoen, vil utgangen være den samme.

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

Ttl RecoveryURL:BrukerID: 1000

Som forventet har -1 blitt returnert av TTL-kommandoen, noe som betyr at ingen utløpstid er knyttet til den angitte nøkkelen.

I henhold til dette eksemplet må vertsselskapet angi en tidsavbrudd på 5 minutter for gjenopprettings-URLen. Så vi vil bruke EX kommandoalternativ. Siden 5 minutter er 300 sekunder, kan vi konstruere GETEX-kommandoen som følger:

getex RecoveryURL:BrukerID: 1000 EX 500

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

Som forventet synker tiden, og til slutt GjenopprettingsURL:BrukerID:1000 nøkkel vil bli fjernet. Følgende er utgangen etter 5 minutter:

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

Noen ganger må du kanskje fjerne tidsavbruddsverdien knyttet til en gitt nøkkel. Så, PERSIST-kommandoalternativet kan brukes til å slette en TTL-verdi relatert til en spesifisert nøkkel.

La oss lage en annen eksempelnøkkel og tilordne en strengverdi til den. I dette tilfellet vil vi spesifisere TTL-verdien i millisekunder ved å sende PX alternativ.

sett KeytoTestPersist 'Dette vil utløpe innen 60 sekunder' PX 50 000

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

Som forventet synker TTL. La oss kalle GETEX-kommandoen med PERSIST-alternativet som følger:

getex KeytoTestPersist vedvarer

Ideelt sett ville dette fjerne TTL knyttet til denne nøkkelen. La oss inspisere TTL for nøkkelen KeytoTestPersist.

TTL-kommandoen returnerte -1, som betyr at ingen TTL er knyttet til nøkkelen KeytoTestPersist.

På samme måte GETEX kommandoen kan brukes til å angi utløpstiden for nøkler i UNIX-tidsstempel.

Konklusjon

Oppsummert kan Redis GETEX-kommandoen brukes til å hente strengverdiene som er lagret på en gitt nøkkel, slik 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 i sekunder, millisekunder og UNIX-tidsstempel sekunder eller millisekunder. Som diskutert gir kommandoen PERSIST-alternativet for å fjerne tilhørende TTL for en gitt nøkkel. Totalt sett opererer GETEX-kommandoen med konstant tidskompleksitet.