Redis Hashes er en spesiell type datatype som ligner mye mer på JSON -objektet, Java Hashmap eller en Python -ordbok. Videre er det en samling av feltverdipar som kan brukes til å modellere domeneobjekter. Redis Hash Data Structure er ekstremt minneffektiv der hver hash-tast kan lagre opptil fire milliarder feltverdi-par. Det viktigste er at de grunnleggende hasjoperasjoner som HSET, HGET, HMGET, etc. operere på konstant tidskompleksitet.
Redis Hash -tastene har uendelig tid til å leve (TTL), noe som betyr at de er vedvarende at de blir slettet eksplisitt ved å bruke kommandoer som Del. I denne artikkelen vil vi fokusere på å sette TTL for Redis Hashes ved å bruke utløpskommandoen.
Redis utløper kommando
Utløpskommandoen brukes til å angi en timeout på en gitt nøkkel til en Redis -hasj, sett, liste osv. Redis -tasten blir slettet fra databasen hvis tidsavbruddet utløper. Det viktigste er at timeout er uklar til innholdet i nøkkelen blir slettet eller overskrevet. Å endre verdiene knyttet til en nøkkel påvirker ikke utløpstiden.
Syntaksen til utløpskommandoen er som følger:
Utløper tasten expiry_time_seconds [nx | Gx | Gt | Lt]
nøkkel: Nøkkelen til hasj, liste eller angi at du trenger å angi en timeout.
expirty_time_seconds: Timeout -verdien på få sekunder.
Flere valgfrie argumenter aksepteres av utløpskommandoen.
Nx: Tidsavbruddsverdien er bare angitt hvis den spesifiserte tasten ikke har noen utløp allerede.
Xx: Når den spesifiserte tasten har en eksisterende tidsavbruddsverdi, er den nye utløpet satt.
Gt: Hvis den nye tidsavbruddsverdien er større enn den eksisterende, er den nye utløpet satt.
LT: Den nye tidsavbruddsverdien er satt hvis den eksisterende er større enn den nye.
Viktigst av alt er at utløpskommandoen fungerer på konstant tidskompleksitet. Heltall 1 returneres hvis kommandoutførelsen er vellykket. Hvis operasjonen mislykkes på grunn av gale argumenter eller ikke-eksisterende nøkler, returneres 0.
Vi vil bruke utløpskommandoen på hashes for å sette en utløpstid som vist i følgende avsnitt:
Utløpe redis hasj ved hjelp av utløpskommandoen
La oss anta at en øktinformasjon per bruker er lagret i en Redis -hasj Økt: ID: 1000: Bruker: 10. Vi kan bruke HMSet-kommandoen til å lage en Redis-hasj med flere feltverdipar som følger:
HMSet Session: ID: 1000: Bruker: 10 Brukernavn "Jae" Cookie "Yes" Passord "389YSU2"
La oss inspisere den opprettede hasj ved hjelp av Hgetall -kommandoen.
Hgetall økt: ID: 1000: Bruker: 10
I tillegg utløper økten etter 10 sekunder hvis brukeren er inaktiv i mer enn 60 sekunder. Session utløp oppnås ved å sette utløpstiden for hasj som lagrer sesjonsinformasjonen.
Vi kan bruke utløpskommandoen som følger:
Utløp økt: ID: 1000: Bruker: 10 10
Som nevnt er tidsavbruddsverdien satt til 10 sekunder.
Som forventet er returverdien 1, noe som betyr at TTL er satt vellykket for hasj. La oss sjekke tiden igjen før hasjetasten fjernes fra Redis -butikken. TTL -kommandoen kan brukes som følger:
TTL -økt: ID: 1000: Bruker: 10
Som vist i utgangen, blir tre sekunder igjen før du fjerner hasjen automatisk. Etter 10 sekunder er TTL -kommandoutgangen som følger:
Ettersom -2 heltalls svar er indikert, eksisterer ikke hasj.
Angi timeout basert på eksistensen av en utløpstid
Utløpskommandoen godtar NX- og XX -argumenter for å sette en ny timeout basert på eksistensen av utløp for en spesifisert hasj. La oss lage en ny hasj med Notimeout nøkkel.
Hmset Notimeout -navn "Test"
La oss prøve å sette en ny utløp til forrige hasj. I tillegg gir vi XX -argumentet også til utløpskommandoen.
utløpe notimeout 15 xx
Siden vi spesifiserer Xx Alternativ i kommandoen vil utløpstiden ikke bli satt. XX -alternativet tillater deg ikke å angi en ny utløpstid hvis det ikke er noen eksisterende tidsavbrudd knyttet til den spesifiserte hasjetasten.
Hvis vi bruker Nx Alternativ, tidsavbruddsverdien er satt til 15.
utløpe notimeout 15 nx
Utløpskommandoen returnerer heltall 1 -svaret, noe som betyr at tidsavbruddet er satt riktig.
Angi timeout basert på eksisterende tidsavbruddsverdi
GT- og LT -alternativene kan brukes til å angi hasjutløpstid basert på eksisterende tidsavbruddslengde.
La oss lage en ny hasj som heter HashwithTimeOut.
HMSET HashwithTimeOut Field1 Value1
Deretter satte vi en utløpstid på 200 sekunder for hasj.
utløper HashwithTimeOut 200
La oss prøve å sette en ny timeout på 100 sekunder for hasj sammen med GT -alternativet som følger:
utløpe hashwithtimeOut 100 gt
Siden GT -alternativet er spesifisert, vil utløpskommandoen sjekke om den nye tidsavbruddsverdien er større enn den eksisterende og angi den nye utløpstiden. I dette eksemplet er den nye timeout ikke større enn den eksisterende timeout. Derfor vil kommandoen ikke angi den nye utløpstiden og 0 vil bli returnert.
La oss bruke LT -alternativet i stedet for GT. Siden den nye utløpstiden er lavere enn den nåværende kommandoen, bør følgende kommando angi den nye timeout.
utløpe hashwithtimeOut 100 lt
Konklusjon
Kort sagt, Redis utløper kommandoen brukes til å angi en TTL -verdi for en gitt nøkkel. Som standard er Redis Hash-tastene ikke tilknyttet noen timeout som kalles ikke-flyktig. Som diskutert brukes utløpskommandoen til å angi en timeoutverdi på Redis Hash. Vanligvis blir hasj slettet fra Redis Data Store etter hvor mye tid som er spesifisert som en timeout -verdi. Som vist i eksemplene, godtar den utløpskommandoen noen valgfrie argumenter som XX, NX, GT og LT for å stille inn hasjutløpet basert på en betingelse.