Redis GETEX

Redis Getex



Redis on võtmeväärtuste andmesalv, mida kasutatakse mälusisese vahemälu, andmebaasi, aegridade, voomootori, sõnumi vahendajana jne. Kuna Redise andmesalv kasutab andmete hoidmiseks lihtsat võtme-väärtuste paari vormingut, on see väga mälumaht tõhus. Lisaks on päringu kiirus väga suur ja aeglane keerukus, nagu O(1) ja O(log(N)). Redis võtmed võivad sisaldada erinevaid andmestruktuure, nagu stringid, komplektid, räsid, sorteeritud komplektid ja loendid.

Tavaliselt kasutatakse GET ja SET käske antud Redise võtmele salvestatud stringi tüüpi väärtuste salvestamiseks ja toomiseks. Need kaks käsku töötavad pideva aja keerukusega.







Lisaks on käsk GETEX saadaval antud võtmele salvestatud stringiväärtuste lugemiseks. Kuid see käsk on seotud ka paralleelse kirjutamise operatsiooniga. See juhend keskendub GETEXi käsu süntaksile, selle valikutele ja kasutusjuhtudele.



Redise võtme TTL

Eluaja (TTL) väärtus on antud andmeosa aegumisaeg. Tavaliselt saab TTL-i seostada andmebaasi ridadega. Ajalõpu saab määrata ka Redise klahvidega. Seega saab Redise klient kontrollida järelejäänud sekundite jooksul, millal antud võti andmesalves saadaval on. Redis pakub TTL-käsku, et kontrollida antud võtme reaalajas väärtust. Kui määratud võtmega pole ajalõppu seotud, tagastab TTL-käsk -1. Järgmistes jaotistes kasutame antud võtme järelejäänud aja kontrollimiseks käsku TTL.



GETEXi käsk

Nagu rõhutatud, sarnaneb käsk GETEX rohkem käsuga GET, välja arvatud see, et seda saab kasutada määratud võtme aegumisaja määramiseks. Lisaks võib käsu suvand eemaldada antud võtmest ajalõpu väärtuse. GETEXi käsu süntaks on järgmine:





GETEX võti [ EX timeout_in_secunds | PX ajalõpp_millisekundites | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milliconds | PÜSI ]

võti: See on võti, mis osutab stringi väärtusele.

Järgmisi valikulisi argumente saab kasutada aegumise määramiseks sekundites või millisekundites.



EX: See määrab antud võtme aegumisaja sekundites.

PX: Võtme ajalõpu väärtus määratakse millisekundites.

Lisaks saame määrata UNIX-i ajatempli väärtuse sekundites või millisekundites, kasutades järgmisi käsuvalikuid EXAT ja PXAT :

EXAT: Aegumisaeg määratakse UNIX-i ajatempli vormingus ja ajatempel on sekundites.

PXAT: Antud Redis-võtme ajalõpp määratakse UNIX-i ajatemplina millisekundites.

PÜSI: Selle määramisel saate eemaldada määratud võtmega seotud aja väärtuse.

Käsk GETEX tagastab määratud võtme väärtuse. See käsk töötab ainult stringi tüüpi väärtustega, kuid mitte räside, loendite, sorteeritud komplektide jms korral. Kui määrate võtme, mis on seotud mittestringi väärtusega, tagastab käsk veateate. Lisaks, kui võti on juba aegunud või seda ei eksisteeri, naaseb käsk null.

Järgmises jaotises käsitleme GETEX-käsu praktilist kasutamist.

Kasutusjuhtum – ajutine lähtestamise link või PIN-koodi genereerimine parooli taastamiseks/ühtlaselt taastamiseks

Veebimajutusettevõte pakub registreeritud kasutajatele parooli taastamise funktsiooni. Turvameetmena saadavad nad kasutajale uue URL-i lingi, mis aegub 5 minuti jooksul. Ettevõte on Redise andmehoidlat kasutanud pikka aega ja kasutab GETEX käsku, et määrata antud kasutaja jaoks reaalajas väärtus.

Oletame, et kasutaja, kelle kasutajatunnus on 1000, taotleb parooli taastamist. Seega saab taastamise URL-i salvestada võtmele RecoveryURL:UserID:1000 . Taaste URL-i salvestamiseks saame kasutada käsku SET järgmiselt:

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

Kontrollime, kas stringi URL on võtme juures õigesti salvestatud RecoveryURL:UserID:1000. Käsku GETEX saame kasutada järgmiselt:

getex RecoveryURL:UserID: 1000

Eelmise käsu väljund on näidatud järgmiselt:

Kui oleme käsu GETEX asemel kasutanud käsku GET, on väljund sama.

Kasutame käsku TTL, et kontrollida, kas selle võtmega on seotud aegumisaeg.

Ttl RecoveryURL:UserID: 1000

Ootuspäraselt on TTL-käsk tagastanud -1, mis tähendab, et määratud võtmega ei seostata aegumisaega.

Selle näite kohaselt peab hostimisettevõte määrama taastamise URL-i jaoks 5-minutilise aja. Niisiis, me kasutame EX käsu valik. Kuna 5 minutit on 300 sekundit, saame käsu GETEX koostada järgmiselt:

getex RecoveryURL:UserID: 1000 EX 500

Käivitame TTL-käsku paar korda, et kontrollida järelejäänud aega, mille jooksul võti on andmesalves olemas.

Nagu oodatud, aeg väheneb ja lõpuks RecoveryURL:UserID:1000 võti eemaldatakse. Järgmine on väljund 5 minuti pärast:

-2 on käsuga tagastatud, mis tähendab, et võti on aegunud ja andmesalvest kustutatud.

Mõnikord peate võib-olla eemaldama antud võtmega seotud ajalõpu väärtuse. Seega saab PERSIST käsuvalikut kasutada määratud võtmega seotud TTL-väärtuse kustutamiseks.

Loome teise näidisvõtme ja määrame sellele stringiväärtuse. Sel juhul määrame TTL-i väärtuse millisekundites, edastades PX valik.

seatud KeytoTestPersist 'See aegub 60 sekundi jooksul' PX 50 000

Järgmisena kontrollime järelejäänud aega järgmiselt:

Ootuspäraselt TTL väheneb. Kutsume käsku GETEX koos valikuga PERSIST järgmiselt:

getex KeytoTestPersist

Ideaalis eemaldaks see selle võtmega seotud TTL-i. Kontrollime TTL-i võtme jaoks KeytoTestPersist.

TTL-käsk tagastas -1, mis tähendab, et võtmega pole TTL-i seostatud KeytoTestPersist.

Samamoodi on GETEX käsku saab kasutada UNIX-i ajatempli võtmete aegumisaja määramiseks.

Järeldus

Kokkuvõttes saab Redis GETEX-käsku kasutada antud võtmele salvestatud stringiväärtuste hankimiseks, nagu seda teeb käsk GET. Ainus erinevus GETEX-käsuga on see, et see toetab antud võtme aegumisaegade seadistamist ja eemaldamist. See toetab mitut valikulist argumenti aegumisaja määramiseks sekundites, millisekundites ja UNIX-i ajatempli sekundites või millisekundites. Nagu arutatud, pakub käsk PERSIST suvandit, et eemaldada antud võtmega seotud TTL. Üldiselt töötab GETEX-käsk pideva aja keerukusega.