Redis GETEX

Redis Getex



Redis je pohrana podataka ključ-vrijednost koja se koristi kao predmemorija u memoriji, baza podataka, vremenska serija, mehanizam toka, posrednik poruka itd. Budući da pohrana podataka Redis koristi jednostavan format para ključ-vrijednost za čuvanje podataka, vrlo je memorija učinkovit. Osim toga, brzina postavljanja upita je vrlo visoka s malom vremenskom složenošću kao što su O(1) i O(log(N)). Redis ključevi mogu sadržavati različite strukture podataka, kao što su nizovi, skupovi, hashovi, sortirani skupovi i popisi.

Obično se naredbe GET i SET koriste za pohranjivanje i dohvaćanje vrijednosti tipa niza pohranjenih na određenom Redis ključu. Ove dvije naredbe rade s konstantnom vremenskom složenošću.







Osim toga, naredba GETEX dostupna je za čitanje vrijednosti niza pohranjenih na danom ključu. Ali ova je naredba također povezana s operacijom paralelnog pisanja. Ovaj će se vodič usredotočiti na sintaksu naredbe GETEX, njezine opcije i slučajeve korištenja.



TTL Redis ključa

Vrijeme trajanja (TTL) vrijednost je vrijeme isteka određenog podatka. Obično se TTL može povezati s redovima baze podataka. Timeout se također može postaviti Redis tipkama. Dakle, Redis klijent može provjeriti preostale sekunde koliko će određeni ključ biti dostupan u pohrani podataka. Redis nudi TTL naredbu za provjeru vrijednosti vremena do živog određenog ključa. Ako određenom ključu nije pridruženo vremensko ograničenje, TTL naredba vraća -1. Koristit ćemo naredbu TTL u sljedećim odjeljcima za provjeru preostalog vremena dane tipke.



Naredba GETEX

Kao što je istaknuto, naredba GETEX sličnija je naredbi GET, osim što se može koristiti za postavljanje vremena isteka za navedeni ključ. Nadalje, opcija naredbe može ukloniti vrijednost vremenskog ograničenja s danog ključa. Sintaksa naredbe GETEX je sljedeća:





GETEX ključ [ EX timeout_in_seconds | PX timeout_in_milliseconds | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milliseconds | USTRAJATI ]

ključ: Ovo je ključ koji pokazuje na vrijednost niza.

Sljedeći izborni argumenti mogu se koristiti za postavljanje vremenskog ograničenja u sekundama ili milisekundama.



NJ.: Ovo će postaviti vrijeme isteka u sekundama za određeni ključ.

PX: Vrijednost vremenskog ograničenja ključa bit će postavljena u milisekundama.

Osim toga, možemo odrediti UNIX vremensku oznaku u sekundama ili milisekundama pomoću sljedećih opcija naredbe TOČNO i PXAT :

EXAT: Vrijeme isteka bit će postavljeno u UNIX formatu vremenske oznake, a vremenska oznaka bit će u sekundama.

PXAT: Istek vremena za određeni Redis ključ bit će postavljen kao UNIX vremenska oznaka u milisekundama.

USTRAJATI: Ako ovo navedete, možete ukloniti vrijednost vremena do života povezanu s navedenim ključem.

Naredba GETEX vraća vrijednost navedenog ključa. Ova naredba radi samo s vrijednostima niza, ali ne i s hashovima, popisima, sortiranim skupovima itd. Ako navedete ključ povezan s vrijednošću koja nije niz, naredba će vratiti pogrešku. Osim toga, ako je ključ već istekao ili ne postoji, naredba će se vratiti nula.

U sljedećem odjeljku pokrit ćemo praktičnu upotrebu naredbe GETEX.

Slučaj upotrebe — Privremena veza za ponovno postavljanje ili generiranje PIN koda za oporavak lozinke/OTP-ove

Tvrtka za web hosting nudi značajku oporavka zaporke za registrirane korisnike. Kao sigurnosnu mjeru, korisniku šalju novu URL vezu koja ističe u roku od 5 minuta. Tvrtka već duže vrijeme koristi pohranu podataka Redis i koristi naredbu GETEX za postavljanje vrijednosti vremena do žive za određenog korisnika.

Pretpostavimo da korisnik s user_id 1000 zatraži oporavak lozinke. Dakle, URL za oporavak može biti pohranjen na ključu URL za oporavak:Korisnički ID:1000 . Možemo koristiti naredbu SET za pohranjivanje URL-a za oporavak na sljedeći način:

postaviti URL za oporavak: ID korisnika: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Provjerimo je li string URL ispravno pohranjen na ključu URL za oporavak:Korisnički ID:1000. Naredbu GETEX možemo koristiti na sljedeći način:

getex RecoveryURL:Korisnički ID: 1000

Izlaz prethodne naredbe prikazan je u nastavku:

Ako smo koristili naredbu GET umjesto naredbe GETEX, izlaz će biti isti.

Upotrijebimo naredbu TTL da provjerimo je li vrijeme isteka povezano s ovim ključem.

Ttl RecoveryURL: UserID: 1000

Kao što je i očekivano, naredba TTL vratila je -1, što znači da određenom ključu nije pridruženo vrijeme isteka.

Prema ovom primjeru, tvrtka koja pruža usluge hostinga treba postaviti 5 minuta čekanja za URL za oporavak. Dakle, mi ćemo koristiti Npr naredbena opcija. Budući da je 5 minuta 300 sekundi, naredbu GETEX možemo konstruirati na sljedeći način:

getex RecoveryURL:Korisnički ID: 1000 Npr 500

Pokrenimo naredbu TTL nekoliko puta da provjerimo preostalo vrijeme dok će ključ postojati u pohrani podataka.

Očekivano, vrijeme se smanjuje, a na kraju i URL za oporavak:Korisnički ID:1000 ključ će biti uklonjen. Sljedeći je rezultat nakon 5 minuta:

Naredba je vratila -2, što znači da je ključ istekao i izbrisan iz pohrane podataka.

Ponekad ćete možda trebati ukloniti vrijednost isteka vremena povezanu s određenim ključem. Dakle, opcija naredbe PERSIST može se koristiti za brisanje TTL vrijednosti koja se odnosi na određeni ključ.

Kreirajmo još jedan ogledni ključ i dodijelimo mu vrijednost niza. U ovom slučaju ćemo navesti TTL vrijednost u milisekundama prosljeđivanjem PX opcija.

postaviti KeytoTestPersist 'Ovo će isteći u roku od 60 sekundi' PX 50000

Zatim ćemo provjeriti preostalo vrijeme na sljedeći način:

Kao što je i očekivano, TTL se smanjuje. Pozovimo naredbu GETEX s opcijom PERSIST na sljedeći način:

getex KeytoTestPersist ustrajati

U idealnom slučaju, ovo bi uklonilo TTL povezan s ovim ključem. Provjerimo TTL za ključ KeytoTestPersist.

Naredba TTL vratila je -1, što znači da TTL nije povezan s ključem KeytoTestPersist.

Slično tome, GETEX naredba se može koristiti za postavljanje vremena isteka za ključeve u UNIX vremenskoj oznaci.

Zaključak

Ukratko, naredba Redis GETEX može se koristiti za dohvaćanje vrijednosti niza pohranjenih na danom ključu kao što to čini naredba GET. Jedina razlika s naredbom GETEX je ta što podržava postavljanje i uklanjanje vremena isteka za određeni ključ. Podržava nekoliko izbornih argumenata za određivanje vremena isteka u sekundama, milisekundama i UNIX-timestamp sekundama ili milisekundama. Kao što je spomenuto, naredba daje opciju PERSIST za uklanjanje povezanog TTL-a za dati ključ. Sve u svemu, naredba GETEX radi s konstantnom vremenskom složenošću.