Redis GETEX

Redis Getex



„Redis“ yra raktų ir reikšmių duomenų saugykla, naudojama kaip atmintyje esanti talpykla, duomenų bazė, laiko eilutės, srauto variklis, pranešimų tarpininkas ir kt. Kadangi „Redis“ duomenų saugykla naudoja paprastą raktų ir reikšmių poros formatą duomenims laikyti, todėl ji yra labai talpi. efektyvus. Be to, užklausos greitis yra labai didelis, o laiko sudėtingumas yra mažas, pvz., O(1) ir O(log(N)). Redis raktai gali turėti skirtingas duomenų struktūras, tokias kaip eilutės, rinkiniai, maišos, surūšiuoti rinkiniai ir sąrašai.

Paprastai komandos GET ir SET naudojamos tam tikru Redis raktu saugomoms eilutės tipo reikšmėms saugoti ir nuskaityti. Šios dvi komandos veikia nuolatiniu sudėtingumu.







Be to, GETEX komanda galima nuskaityti tam tikru raktu saugomas eilutės reikšmes. Tačiau ši komanda taip pat yra susijusi su lygiagrečia rašymo operacija. Šiame vadove pagrindinis dėmesys bus skiriamas GETEX komandos sintaksei, jos parinktims ir naudojimo atvejams.



Redis rakto TTL

„Time to live“ (TTL) reikšmė yra tam tikros duomenų dalies galiojimo laikas. Paprastai TTL gali būti susietas su duomenų bazės eilutėmis. Laikas gali būti nustatytas naudojant Redis klavišus. Taigi, Redis klientas gali patikrinti likusias sekundes, kol tam tikras raktas bus pasiekiamas duomenų saugykloje. Redis siūlo TTL komandą, kad patikrintų tam tikro rakto veikimo laiką. Jei su nurodytu raktu nesusietas joks skirtasis laikas, TTL komanda grąžina -1. Kituose skyriuose naudosime komandą TTL, kad patikrintume likusį tam tikro rakto laiką.



GETEX komanda

Kaip pabrėžta, GETEX komanda yra panašesnė į komandą GET, išskyrus tai, kad ją galima naudoti norint nustatyti nurodyto rakto galiojimo laiką. Be to, komandos parinktis gali pašalinti skirtojo laiko reikšmę iš nurodyto rakto. GETEX komandos sintaksė yra tokia:





GETEX raktas [ EX skirtasis laikas_in_sekundėmis | PX timeout_in_miliseconds | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-miliseconds | IŠTEIKTI ]

Raktas: Tai yra raktas, nurodantis eilutės reikšmę.

Šie pasirenkami argumentai gali būti naudojami norint nustatyti skirtąjį laiką sekundėmis arba milisekundėmis.



Pvz.: Taip bus nustatytas nurodyto rakto galiojimo laikas sekundėmis.

PX: Rakto skirtojo laiko reikšmė bus nustatyta milisekundėmis.

Be to, galime nurodyti UNIX laiko žymos reikšmę sekundėmis arba milisekundėmis, naudodami šias komandų parinktis EXAT ir PXAT :

EXAT: Galiojimo laikas bus nustatytas UNIX laiko žymos formatu, o laiko žyma bus sekundėmis.

PXAT: Tam tikro Redis rakto skirtasis laikas bus nustatytas kaip UNIX laiko žyma milisekundėmis.

PERSIST: Tai nurodydami galite pašalinti su nurodytu raktu susietą laiko iki gyvavimo vertę.

GETEX komanda grąžina nurodyto rakto reikšmę. Ši komanda veikia tik su eilutės tipo reikšmėmis, bet ne maišos, sąrašų, surūšiuotų rinkinių ir pan. Jei nurodysite raktą, susietą su ne eilutės reikšme, komanda grąžins klaidą. Be to, jei rakto galiojimo laikas jau pasibaigęs arba jo nėra, komanda grįš nulis.

Kitame skyriuje apžvelgsime praktinį GETEX komandos naudojimą.

Naudojimo atvejis – laikinojo nustatymo iš naujo nuoroda arba PIN kodo generavimas slaptažodžiui atkurti / OTP

Žiniatinklio prieglobos įmonė registruotiems vartotojams teikia slaptažodžio atkūrimo funkciją. Saugumo sumetimais jie siunčia vartotojui naują URL nuorodą, kurios galiojimas baigsis per 5 minutes. Bendrovė ilgą laiką naudoja „Redis“ duomenų saugyklą ir naudoja komandą GETEX, kad nustatytų tam tikro vartotojo gyvavimo laiką.

Tarkime, kad vartotojas, kurio vartotojo_id 1000, prašo atkurti slaptažodį. Taigi atkūrimo URL gali būti saugomas raktu RecoveryURL:UserID:1000 . Galime naudoti komandą SET, kad išsaugotume atkūrimo URL taip:

rinkinys RecoveryURL:UserID: 1000 „https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs“

Patikrinkime, ar eilutės URL tinkamai išsaugotas rakte RecoveryURL:UserID:1000. GETEX komandą galime naudoti taip:

getex RecoveryURL:UserID: 1000

Ankstesnės komandos išvestis rodoma taip:

Jei vietoj komandos GETEX naudojome komandą GET, išvestis bus tokia pati.

Naudokime TTL komandą, kad patikrintume, ar galiojimo laikas yra susietas su šiuo raktu.

Ttl atkūrimo URL: Vartotojo ID: 1000

Kaip ir tikėtasi, TTL komanda grąžino -1, o tai reiškia, kad galiojimo laikas nesusietas su nurodytu raktu.

Šiame pavyzdyje prieglobos įmonė turi nustatyti 5 minučių atkūrimo URL skirtąjį laiką. Taigi, mes naudosime EX komandos parinktis. Kadangi 5 minutės yra 300 sekundžių, GETEX komandą galime sukurti taip:

getex RecoveryURL:UserID: 1000 EX 500

Kelis kartus paleiskime komandą TTL, kad patikrintume likusį laiką, kol raktas bus duomenų saugykloje.

Kaip ir tikėtasi, laikas mažėja ir galiausiai RecoveryURL:UserID:1000 raktas bus pašalintas. Toliau pateikiama išvestis po 5 minučių:

Komanda grąžino -2, o tai reiškia, kad rakto galiojimo laikas baigėsi ir ištrintas iš duomenų saugyklos.

Kartais gali tekti pašalinti skirtojo laiko reikšmę, susietą su nurodytu raktu. Taigi, komandos PERSIST parinktis gali būti naudojama norint ištrinti su nurodytu raktu susijusią TTL reikšmę.

Sukurkime kitą pavyzdinį raktą ir priskirkime jam eilutės reikšmę. Tokiu atveju mes nurodysime TTL reikšmę milisekundėmis, perduodami PX variantas.

rinkinys KeytoTestPersist 'Tai baigsis per 60 sekundžių' PX 50 000

Tada mes patikrinsime likusį laiką taip:

Kaip ir tikėtasi, TTL mažėja. Iškvieskime GETEX komandą su PERSIST parinktimi taip:

getex KeytoTestPersist išlieka

Idealiu atveju būtų pašalintas su šiuo raktu susietas TTL. Pažiūrėkime, ar TTL yra raktas KeytoTestPersist.

TTL komanda grąžino -1, o tai reiškia, kad TTL nėra susietas su raktu KeytoTestPersist.

Panašiai, GETEX komanda gali būti naudojama norint nustatyti UNIX laiko žymos raktų galiojimo laiką.

Išvada

Apibendrinant galima pasakyti, kad komanda Redis GETEX gali būti naudojama tam tikru raktu saugomoms eilutės reikšmėms gauti, kaip tai daro komanda GET. Vienintelis skirtumas nuo GETEX komandos yra tas, kad ji palaiko tam tikro rakto galiojimo laiko nustatymą ir pašalinimą. Jis palaiko kelis pasirenkamus argumentus, skirtus nurodyti galiojimo laiką sekundėmis, milisekundėmis ir UNIX laiko žyma sekundėmis arba milisekundėmis. Kaip aptarta, komanda suteikia parinktį PERSIST pašalinti susietą TTL tam tikram raktui. Apskritai GETEX komanda veikia nuolat sudėtingai.