Zgoščevalni ključ Redis EXPIRE

Zgoscevalni Kljuc Redis Expire



Zgoščene vrednosti Redis so posebna vrsta podatkovnega tipa, ki je veliko bolj podobna objektu JSON, Java HashMap ali slovarju Python. Poleg tega je zbirka parov polje-vrednost, ki se lahko uporabljajo za modeliranje predmetov domene. Zgoščevalna podatkovna struktura Redis je izjemno učinkovita pri pomnilniku, kjer lahko vsak zgoščeni ključ shrani do štiri milijarde parov vrednosti polja. Najpomembneje je, da temeljne operacije zgoščevanja, kot so HSET, HGET, HMGET itd., delujejo na konstantni časovni kompleksnosti.


Zgoščevalni ključi Redis imajo neskončen čas življenja (TTL), kar pomeni, da so obstojni in se eksplicitno izbrišejo z ukazi, kot je DEL. V tem članku se bomo osredotočili na nastavitev TTL za zgoščene vrednosti Redis z uporabo ukaza EXPIRE.







Ukaz Redis EXPIRE

Ukaz EXPIRE se uporablja za nastavitev časovne omejitve za dani ključ zgoščene vrednosti, nabora, seznama itd. Redis ključ se izbriše iz baze podatkov, če časovna omejitev poteče. Najpomembneje je, da časovna omejitev ni izbrisana, dokler vsebina ključa ni izbrisana ali prepisana. Spreminjanje vrednosti, povezanih s ključem, ne vpliva na čas poteka.



Sintaksa ukaza EXPIRE je naslednja:



EXPIRE ključ expiry_time_seconds [ NX | GX | GT | LT ]


ključ: Ključ zgoščene vrednosti, seznama ali nabora, ki ga potrebujete za nastavitev časovne omejitve.





expirty_time_seconds: Vrednost časovne omejitve v sekundah.

Ukaz EXPIRE sprejme več neobveznih argumentov.



NX: Vrednost časovne omejitve je nastavljena le, če navedeni ključ še ni potekel.

XX: Ko ima podani ključ obstoječo vrednost časovne omejitve, je nastavljen nov potek.

GT: Če je nova vrednost časovne omejitve večja od obstoječe, se nastavi nov potek.

LT: Nova vrednost časovne omejitve je nastavljena, če je obstoječa večja od nove.

Najpomembneje je, da ukaz EXPIRE deluje na konstantni časovni kompleksnosti. Če je ukaz uspešen, se vrne celo število 1. Če operacija ne uspe zaradi napačnih argumentov ali neobstoječih ključev, se vrne 0.

Uporabili bomo ukaz EXPIRE za zgoščene vrednosti za nastavitev časa poteka, kot je prikazano v naslednjem razdelku:

Expire Redis Hash z uporabo ukaza EXPIRE

Predpostavimo, da so informacije o seji na uporabnika shranjene v zgoščeni vrednosti Redis seja:id:1000:uporabnik:10. Z ukazom HMSET lahko ustvarimo zgoščeno vrednost Redis z več pari vrednosti polja, kot sledi:

seja hmset:id: 1000 :uporabnik: 10 uporabniško ime 'jae' piškotek 'da' geslo '389Ysu2'


Preglejmo ustvarjeni hash z ukazom HGETALL.

hgetall session:id: 1000 :uporabnik: 10



Poleg tega seja poteče po 10 sekundah, če je uporabnik nedejaven več kot 60 sekund. Potek seje se doseže z nastavitvijo časa poteka za zgoščeno vrednost, ki shranjuje informacije o seji.

Ukaz EXPIRE lahko uporabimo na naslednji način:

seja poteče:id: 1000 :uporabnik: 10 10


Kot že omenjeno, je vrednost časovne omejitve nastavljena na 10 sekund.


Po pričakovanjih je vrnjena vrednost 1, kar pomeni, da je TTL uspešno nastavljen za zgoščeno vrednost. Preverimo preostali čas, preden se ključ zgoščevanja odstrani iz trgovine Redis. Ukaz TTL lahko uporabite na naslednji način:

ttl seja:id: 1000 :uporabnik: 10



Kot je prikazano v izhodu, so pred samodejnim odstranjevanjem zgoščene vrednosti še tri sekunde. Po 10 sekundah je izhod ukaza TTL naslednji:


Ker je naveden celoštevilski odgovor -2, zgoščena vrednost ne obstaja.

Nastavite časovno omejitev na podlagi obstoja časa poteka

Ukaz EXPIRE sprejme argumenta NX in XX za nastavitev nove časovne omejitve na podlagi obstoja poteka za določeno zgoščeno vrednost. Ustvarimo novo zgoščeno vrednost z noTimeOut ključ .

ime hmset noTimeOut 'test'


Poskusimo nastaviti nov potek prejšnjega zgoščevanja. Poleg tega posredujemo argument XX tudi ukazu EXPIRE.

poteči noTimeOut petnajst XX


Ker določamo XX možnost v ukazu, čas poteka ne bo nastavljen. Možnost XX vam ne dovoljuje, da nastavite nov čas poteka, če ni obstoječe časovne omejitve, povezane z navedenim zgoščenim ključem.


Če uporabljamo NX možnost, je vrednost časovne omejitve nastavljena na 15.

poteči noTimeOut petnajst NX



Ukaz EXPIRE vrne odgovor celo število 1, kar pomeni, da je časovna omejitev pravilno nastavljena.

Nastavite časovno omejitev glede na obstoječo vrednost časovne omejitve

Možnosti GT in LT lahko uporabite za nastavitev časa poteka razpršitve glede na obstoječo dolžino časovne omejitve.

Ustvarimo novo zgoščeno vrednost, imenovano hashWithTimeout.

hmset hashWithTimeout polje1 vrednost1


Nato nastavimo čas poteka 200 sekund za zgoščeno vrednost.

poteči hashWithTimeout 200


Poskusimo nastaviti novo časovno omejitev 100 sekund za zgoščeno vrednost skupaj z možnostjo GT, kot sledi:

poteči hashWithTimeout 100 GT


Ker je podana možnost GT, bo ukaz EXPIRE preveril, ali je nova vrednost časovne omejitve večja od obstoječe, in nastavil nov čas poteka. V tem primeru nova časovna omejitev ni daljša od obstoječe časovne omejitve. Zato ukaz ne bo nastavil novega časa poteka in vrnjena bo 0.


Uporabimo možnost LT namesto GT. Ker je novi čas poteka nižji od trenutnega, bi moral naslednji ukaz uspešno nastaviti novo časovno omejitev.

poteči hashWithTimeout 100 LT


Zaključek

Na kratko, ukaz Redis EXPIRE se uporablja za nastavitev vrednosti TTL za dani ključ. Privzeto zgoščevalni ključi Redis niso povezani z nobeno časovno omejitvijo, ki se imenuje nehlapna. Kot smo že omenili, se ukaz EXPIRE uporablja za nastavitev vrednosti časovne omejitve za zgoščeno vrednost Redis. Običajno se zgoščena vrednost izbriše iz podatkovne shrambe Redis po času, določenem kot vrednost časovne omejitve. Kot je prikazano v primerih, ukaz EXPIRE sprejme nekaj neobveznih argumentov, kot so XX, NX, GT in LT, da na podlagi pogoja nastavi potek zgoščene vrednosti.