Redis GETEX

Redis Getex



Redis ir atslēgu vērtību datu krātuve, ko izmanto kā kešatmiņu atmiņā, datu bāzi, laikrindas, straumēšanas programmu, ziņojumu starpnieku utt. Tā kā Redis datu krātuvē datu glabāšanai tiek izmantots vienkāršs atslēgu un vērtību pāra formāts, tas ir ļoti atmiņa. efektīvs. Turklāt vaicājumu veikšanas ātrums ir ļoti augsts ar zemu laika sarežģītību, piemēram, O(1) un O(log(N)). Redis taustiņos var būt dažādas datu struktūras, piemēram, virknes, kopas, jaucējvārdi, sakārtotas kopas un sarakstus.

Parasti komandas GET un SET tiek izmantotas, lai saglabātu un izgūtu virknes tipa vērtības, kas saglabātas noteiktā Redis atslēgā. Šīs divas komandas darbojas ar pastāvīgu laika sarežģītību.







Turklāt GETEX komanda ir pieejama, lai nolasītu virknes vērtības, kas saglabātas noteiktā atslēgā. Bet šī komanda ir saistīta arī ar paralēlu rakstīšanas darbību. Šajā rokasgrāmatā galvenā uzmanība tiks pievērsta GETEX komandu sintaksei, tās opcijām un lietošanas gadījumiem.



Redis atslēgas TTL

Time to live (TTL) vērtība ir noteiktas datu daļas derīguma termiņš. Parasti TTL var saistīt ar datu bāzes rindām. Taimautu var iestatīt arī ar Redis taustiņiem. Tātad Redis klients var pārbaudīt atlikušās sekundes, kad dotā atslēga būs pieejama datu krātuvē. Redis piedāvā TTL komandu, lai pārbaudītu dotās atslēgas darbības laiku. Ja taimauts nav saistīts ar norādīto atslēgu, komanda TTL atgriež -1. Nākamajās sadaļās izmantosim komandu TTL, lai pārbaudītu dotās atslēgas atlikušo laiku.



GETEX komanda

Kā uzsvērts, komanda GETEX ir vairāk līdzīga komandai GET, izņemot to, ka to var izmantot, lai iestatītu norādītās atslēgas derīguma termiņu. Turklāt komandas opcija var noņemt taimauta vērtību no dotās atslēgas. GETEX komandas sintakse ir šāda:





GETEX atslēga [ EX taimauts_in_seconds | PX taimauts_milisekundēs | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-miliseconds | PATURST ]

atslēga: Šī ir atslēga, kas norāda uz virknes vērtību.

Lai iestatītu taimautu sekundēs vai milisekundēs, var izmantot šādus izvēles argumentus.



EX: Tas iestatīs dotās atslēgas derīguma termiņu sekundēs.

PX: Atslēgas noildzes vērtība tiks iestatīta milisekundēs.

Turklāt mēs varam norādīt UNIX laikspiedola vērtību sekundēs vai milisekundēs, izmantojot šādas komandas opcijas EXAT un PXAT :

EXAT: Derīguma termiņš tiks iestatīts UNIX laikspiedola formātā, un laikspiedols būs sekundēs.

PXAT: Dotās Redis atslēgas taimauts tiks iestatīts kā UNIX laikspiedols milisekundēs.

PATURST: Norādot to, varat noņemt ar norādīto atslēgu saistīto vērtību līdz dzīvībai.

Komanda GETEX atgriež norādītās atslēgas vērtību. Šī komanda darbojas tikai ar virknes tipa vērtībām, bet ne jaucējkodiem, sarakstiem, sakārtotām kopām utt. Ja norādāt atslēgu, kas saistīta ar vērtību, kas nav virkne, komanda atgriezīs kļūdu. Turklāt, ja atslēgas derīguma termiņš jau ir beidzies vai tā neeksistē, komanda atgriezīsies nulle.

Nākamajā sadaļā mēs apskatīsim GETEX komandas praktisko izmantošanu.

Lietošanas gadījums — pagaidu atiestatīšanas saite vai PIN koda ģenerēšana paroles atkopšanai/vienreizējai piekļuvei

Tīmekļa mitināšanas uzņēmums reģistrētiem lietotājiem nodrošina paroles atkopšanas funkciju. Drošības nolūkos viņi nosūta lietotājam jaunu URL saiti, kuras derīguma termiņš beigsies 5 minūšu laikā. Uzņēmums jau ilgu laiku ir izmantojis Redis datu krātuvi un izmanto GETEX komandu, lai iestatītu laika darbības vērtību konkrētam lietotājam.

Pieņemsim, ka lietotājs ar user_id 1000 pieprasa paroles atkopšanu. Tātad atkopšanas URL var saglabāt pie atslēgas RecoveryURL:UserID:1000 . Mēs varam izmantot komandu SET, lai saglabātu atkopšanas URL šādi:

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

Pārbaudīsim, vai virknes URL ir pareizi saglabāts pie atslēgas RecoveryURL:UserID:1000. Mēs varam izmantot GETEX komandu šādi:

getex RecoveryURL:UserID: 1000

Iepriekšējās komandas izvade ir parādīta šādi:

Ja GETEX komandas vietā esam izmantojuši komandu GET, izvade būs tāda pati.

Izmantosim komandu TTL, lai pārbaudītu, vai ar šo atslēgu ir saistīts derīguma termiņš.

Ttl RecoveryURL:UserID: 1000

Kā gaidīts, TTL komanda ir atgriezusi -1, kas nozīmē, ka ar norādīto atslēgu nav saistīts derīguma termiņš.

Šajā piemērā mitināšanas uzņēmumam ir jāiestata 5 minūšu taimauts atkopšanas URL. Tātad, mēs izmantosim EX komandas opcija. Tā kā 5 minūtes ir 300 sekundes, mēs varam izveidot GETEX komandu šādi:

getex RecoveryURL:UserID: 1000 EX 500

Dažas reizes izpildīsim komandu TTL, lai pārbaudītu atlikušo laiku, cik ilgi atslēga pastāvēs datu krātuvē.

Kā gaidīts, laiks samazinās, un galu galā RecoveryURL:UserID:1000 atslēga tiks noņemta. Tālāk ir parādīta izvade pēc 5 minūtēm:

Komanda ir atgriezusi -2, kas nozīmē, ka atslēgai ir beidzies derīguma termiņš un tā ir izdzēsta no datu krātuves.

Dažreiz jums var būt nepieciešams noņemt taimauta vērtību, kas saistīta ar doto atslēgu. Tātad komandas opciju PERSIST var izmantot, lai izdzēstu TTL vērtību, kas saistīta ar norādīto atslēgu.

Izveidosim citu parauga atslēgu un piešķirsim tai virknes vērtību. Šajā gadījumā mēs norādīsim TTL vērtību milisekundēs, nododot PX opciju.

komplekts KeytoTestPersist 'Tas beigsies 60 sekunžu laikā' PX 50 000

Tālāk mēs pārbaudīsim atlikušo laiku šādi:

Kā gaidīts, TTL samazinās. Izsauksim GETEX komandu ar opciju PERSIST šādi:

getex KeytoTestPersist saglabājas

Ideālā gadījumā tas noņemtu ar šo atslēgu saistīto TTL. Pārbaudīsim atslēgas TTL KeytoTestPersist.

TTL komanda atgrieza -1, kas nozīmē, ka TTL nav saistīts ar atslēgu KeytoTestPersist.

Līdzīgi, GETEX komandu var izmantot, lai iestatītu UNIX laika zīmoga atslēgu derīguma termiņu.

Secinājums

Rezumējot, komandu Redis GETEX var izmantot, lai izgūtu virknes vērtības, kas saglabātas noteiktā atslēgā, kā to dara komanda GET. Vienīgā atšķirība no GETEX komandas ir tā, ka tā atbalsta noteiktas atslēgas derīguma termiņu iestatīšanu un noņemšanu. Tas atbalsta vairākus izvēles argumentus, lai norādītu derīguma termiņu sekundēs, milisekundēs un UNIX laikspiedola sekundēs vai milisekundēs. Kā minēts, komanda nodrošina iespēju PERSIST, lai noņemtu saistīto TTL noteiktai atslēgai. Kopumā GETEX komanda darbojas ar nemainīgu laika sarežģītību.