Redis GETEX

Redis Getex



Redis je shramba podatkov ključ-vrednost, ki se uporablja kot predpomnilnik v pomnilniku, baza podatkov, časovna serija, mehanizem pretoka, posrednik sporočil itd. Ker podatkovna shramba Redis uporablja preprosto obliko para ključ-vrednost za shranjevanje podatkov, je zelo pomnilnik učinkovito. Poleg tega je hitrost poizvedovanja zelo visoka z nizko časovno kompleksnostjo, kot sta O(1) in O(log(N)). Ključi Redis lahko vsebujejo različne podatkovne strukture, kot so nizi, nizi, zgoščene vrednosti, razvrščeni nizi in seznami.

Običajno se ukaza GET in SET uporabljata za shranjevanje in pridobivanje vrednosti tipa niza, shranjenih na danem ključu Redis. Ta dva ukaza delujeta s konstantno časovno kompleksnostjo.







Poleg tega je ukaz GETEX na voljo za branje vrednosti nizov, shranjenih na danem ključu. Toda ta ukaz je povezan tudi z operacijo vzporednega pisanja. Ta vodnik se bo osredotočil na sintakso ukaza GETEX, njegove možnosti in primere uporabe.



TTL ključa Redis

Vrednost časa življenja (TTL) je čas poteka danega podatka. Običajno je TTL mogoče povezati z vrsticami baze podatkov. Časovno omejitev lahko nastavite tudi s tipkami Redis. Tako lahko odjemalec Redis preveri preostale sekunde, ko bo dani ključ na voljo v shrambi podatkov. Redis ponuja ukaz TTL za preverjanje vrednosti časa do živega danega ključa. Če z določenim ključem ni povezana nobena časovna omejitev, ukaz TTL vrne -1. V naslednjih razdelkih bomo uporabili ukaz TTL za preverjanje preostalega časa danega ključa.



Ukaz GETEX

Kot je poudarjeno, je ukaz GETEX bolj podoben ukazu GET, le da ga je mogoče uporabiti za nastavitev časa poteka za navedeni ključ. Poleg tega lahko ukazna možnost odstrani vrednost časovne omejitve iz danega ključa. Sintaksa ukaza GETEX je naslednja:





Ključ GETEX [ EX časovna omejitev_v_sekundah | PX timeout_in_milliseconds | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milliseconds | VZTRAJAJ ]

ključ: To je ključ, ki kaže na vrednost niza.

Za nastavitev časovne omejitve v sekundah ali milisekundah lahko uporabite naslednje neobvezne argumente.



NEX: To bo nastavilo čas poteka v sekundah za dani ključ.

PX: Vrednost časovne omejitve ključa bo nastavljena v milisekundah.

Poleg tega lahko določimo vrednost časovnega žiga UNIX v sekundah ali milisekundah z uporabo naslednjih ukaznih možnosti EXAT in PXAT :

EXAT: Čas poteka bo nastavljen v obliki časovnega žiga UNIX, časovni žig pa bo v sekundah.

PXAT: Časovna omejitev za dani ključ Redis bo nastavljena kot časovni žig UNIX v milisekundah.

VZTRAJANJE: Če to določite, lahko odstranite vrednost časa do življenja, povezano z določenim ključem.

Ukaz GETEX vrne vrednost podanega ključa. Ta ukaz deluje samo z nizovnimi vrednostmi, ne pa tudi z zgoščenimi vrednostmi, seznami, razvrščenimi nizi itd. Če podate ključ, povezan z vrednostjo, ki ni niz, bo ukaz vrnil napako. Poleg tega se bo ukaz vrnil, če je ključ že potekel ali ne obstaja nič.

V naslednjem razdelku bomo obravnavali praktično uporabo ukaza GETEX.

Primer uporabe — Začasna povezava za ponastavitev ali generiranje kode PIN za obnovitev gesel/OTP

Podjetje za spletno gostovanje nudi registriranim uporabnikom funkcijo obnovitve gesla. Kot varnostni ukrep uporabniku pošljejo novo URL povezavo, ki poteče v 5 minutah. Podjetje že dolgo uporablja shrambo podatkov Redis in uporablja ukaz GETEX za nastavitev vrednosti časa do živega za danega uporabnika.

Predpostavimo, da uporabnik z user_id 1000 zahteva obnovitev gesla. URL za obnovitev je torej mogoče shraniti na ključ URL za obnovitev:ID uporabnika:1000 . Z ukazom SET lahko shranimo obnovitveni URL na naslednji način:

set RecoveryURL:UserID: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Preverimo, ali je URL niza pravilno shranjen na ključu URL za obnovitev:ID uporabnika:1000. Ukaz GETEX lahko uporabimo na naslednji način:

getex RecoveryURL:UserID: 1000

Izhod prejšnjega ukaza je prikazan v naslednjem:

Če smo namesto ukaza GETEX uporabili ukaz GET, bo rezultat enak.

Uporabimo ukaz TTL, da preverimo, ali je s tem ključem povezan čas poteka.

Ttl RecoveryURL:UserID: 1000

Kot je bilo pričakovano, je ukaz TTL vrnil -1, kar pomeni, da s podanim ključem ni povezan noben čas poteka.

Glede na ta primer mora gostiteljsko podjetje nastaviti 5-minutno časovno omejitev za obnovitveni URL. Torej, uporabljali bomo NEX možnost ukaza. Ker je 5 minut 300 sekund, lahko sestavimo ukaz GETEX na naslednji način:

getex RecoveryURL:UserID: 1000 NEX 500

Nekajkrat zaženimo ukaz TTL, da preverimo, koliko časa bo ključ obstajal v shrambi podatkov.

Kot je bilo pričakovano, se čas zmanjšuje in sčasoma URL za obnovitev:ID uporabnika:1000 ključ bo odstranjen. Sledi rezultat po 5 minutah:

Ukaz je vrnil -2, kar pomeni, da je ključ potekel in je izbrisan iz shrambe podatkov.

Včasih boste morda morali odstraniti vrednost časovne omejitve, povezano z danim ključem. Torej lahko ukazno možnost PERSIST uporabite za brisanje vrednosti TTL, povezane z določenim ključem.

Ustvarimo še en vzorčni ključ in mu dodelimo vrednost niza. V tem primeru bomo podali vrednost TTL v milisekundah s posredovanjem PX možnost.

set KeytoTestPersist 'To bo poteklo v 60 sekundah' PX 50000

Nato bomo preverili preostali čas na naslednji način:

Kot je bilo pričakovano, se TTL zmanjšuje. Pokličimo ukaz GETEX z možnostjo PERSIST, kot sledi:

getex KeytoTestPersist vztraja

V idealnem primeru bi to odstranilo TTL, povezan s tem ključem. Preglejmo TTL za ključ KeytoTestPersist.

Ukaz TTL je vrnil -1, kar pomeni, da s ključem ni povezan TTL KeytoTestPersist.

Podobno je GETEX ukaz lahko uporabite za nastavitev časa poteka za ključe v časovnem žigu UNIX.

Zaključek

Če povzamemo, lahko ukaz Redis GETEX uporabite za pridobivanje vrednosti nizov, shranjenih na danem ključu, kot to počne ukaz GET. Edina razlika z ukazom GETEX je, da podpira nastavitev in odstranitev časov poteka za dani ključ. Podpira več neobveznih argumentov za podajanje časa poteka v sekundah, milisekundah in časovni žig UNIX v sekundah ali milisekundah. Kot smo že omenili, ukaz nudi možnost PERSIST za odstranitev povezanega TTL za dani ključ. Na splošno ukaz GETEX deluje s konstantno časovno kompleksnostjo.