Redis GETEX

Redis Getex



Redis on avainarvotietovarasto, jota käytetään muistin sisäisenä välimuistina, tietokantana, aikasarjoina, stream-moottorina, viestivälittäjänä jne. Koska Redis-tietovarasto käyttää yksinkertaista avainarvoparimuotoa tietojen säilyttämiseen, se on hyvin muistia. tehokas. Lisäksi kyselyn nopeus on erittäin korkea pienillä aikamonimutkaisuuksilla, kuten O(1) ja O(log(N)). Redis-avaimet voivat sisältää erilaisia ​​tietorakenteita, kuten merkkijonoja, joukkoja, tiivisteitä, lajiteltuja joukkoja ja luetteloita.

Yleensä GET- ja SET-komentoja käytetään tiettyyn Redis-avaimeen tallennettujen merkkijonotyyppisten arvojen tallentamiseen ja hakemiseen. Nämä kaksi komentoa toimivat jatkuvalla aikamonimutkaisuudella.







Lisäksi GETEX-komento on käytettävissä tiettyyn avaimeen tallennettujen merkkijonoarvojen lukemiseen. Mutta tämä komento liittyy myös rinnakkaiskirjoitustoimintoon. Tämä opas keskittyy GETEX-komentosyntaksiin, sen valintoihin ja käyttötapauksiin.



Redis-avaimen TTL

Time to live (TTL) -arvo on tietyn datan vanhenemisaika. Yleensä TTL voidaan liittää tietokannan riveihin. Aikakatkaisu voidaan asettaa myös Redis-näppäimillä. Joten Redis-asiakas voi tarkistaa jäljellä olevat sekuntit, jolloin tietty avain on saatavilla tietovarastossa. Redis tarjoaa TTL-komennon, joka tarkistaa tietyn avaimen live-arvon. Jos määritettyyn avaimeen ei liity aikakatkaisua, TTL-komento palauttaa -1. Käytämme seuraavissa osioissa TTL-komentoa tietyn avaimen jäljellä olevan ajan tarkistamiseen.



GETEX-komento

Kuten korostettiin, GETEX-komento on enemmän samanlainen kuin GET-komento, paitsi että sitä voidaan käyttää määritetyn avaimen vanhenemisajan asettamiseen. Lisäksi komentovaihtoehto voi poistaa aikakatkaisuarvon annetusta avaimesta. GETEX-komennon syntaksi on seuraava:





GETEX-avain [ EX-aikakatkaisu_sekunnissa | PX-aikakatkaisu millisekunteina | EXAT timeout_in_unix-time-seconds | PXAT-aikakatkaisu_unix-time-millisecondsissa | PYSYT ]

avain: Tämä on avain, joka osoittaa merkkijonoarvoon.

Seuraavia valinnaisia ​​argumentteja voidaan käyttää aikakatkaisun asettamiseen sekunteina tai millisekunteina.



EX: Tämä asettaa tietyn avaimen vanhenemisajan sekunteina.

PX: Avaimen aikakatkaisun arvo asetetaan millisekunteina.

Lisäksi voimme määrittää UNIX-aikaleiman arvon sekunteina tai millisekunteina käyttämällä seuraavia komentovaihtoehtoja EXAT ja PXAT :

EXAT: Vanhenemisaika asetetaan UNIX-aikaleimamuodossa, ja aikaleima on sekunneissa.

PXAT: Tietyn Redis-avaimen aikakatkaisu asetetaan UNIX-aikaleimaksi millisekunteina.

PYSYT: Määrittämällä tämän voit poistaa määritettyyn avaimeen liittyvän aika-arvon.

GETEX-komento palauttaa määritetyn avaimen arvon. Tämä komento toimii vain merkkijonotyyppisten arvojen kanssa, mutta ei hajautusarvojen, luetteloiden, lajiteltujen joukkojen jne. kanssa. Jos määrität avaimen, joka liittyy muuhun kuin merkkijonoarvoon, komento palauttaa virheen. Lisäksi, jos avain on jo vanhentunut tai sitä ei ole olemassa, komento palautuu nolla.

Seuraavassa osiossa käsittelemme GETEX-komennon käytännön käyttöä.

Käyttötapaus — Väliaikainen nollauslinkki tai PIN-koodin luominen salasanan palautusta/OTP:itä varten

Web-isännöintiyritys tarjoaa salasanan palautusominaisuuden rekisteröityneille käyttäjille. Turvatoimenpiteenä he lähettävät käyttäjälle uuden URL-linkin, joka vanhenee 5 minuutin sisällä. Yritys on käyttänyt Redis-tietosäilöä pitkään ja käyttää GETEX-komentoa asettaakseen tietyn käyttäjän live-arvon.

Oletetaan, että käyttäjä, jonka käyttäjätunnus on 1000, pyytää salasanan palautusta. Joten palautus-URL-osoite voidaan tallentaa avaimeen RecoveryURL:UserID:1000 . Voimme käyttää SET-komentoa palauttamaan URL-osoitteen seuraavasti:

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

Tarkastetaan, onko merkkijonon URL-osoite tallennettu oikein avaimeen RecoveryURL:UserID:1000. Voimme käyttää GETEX-komentoa seuraavasti:

getex RecoveryURL:UserID: 1000

Edellisen komennon tulos näkyy seuraavassa:

Jos olemme käyttäneet GET-komentoa GETEX-komennon sijaan, tulos on sama.

Käytetään TTL-komentoa tarkistaaksemme, liittyykö tähän avaimeen vanhenemisaika.

Ttl RecoveryURL:UserID: 1000

Kuten odotettiin, TTL-komento on palauttanut -1, mikä tarkoittaa, että määritettyyn avaimeen ei liity vanhenemisaikaa.

Tämän esimerkin mukaisesti hosting-yrityksen on asetettava palautus-URL-osoitteelle 5 minuutin aikakatkaisu. Joten aiomme käyttää EX komentovaihtoehto. Koska 5 minuuttia on 300 sekuntia, voimme rakentaa GETEX-komennon seuraavasti:

getex RecoveryURL:UserID: 1000 EX 500

Suoritetaan TTL-komento muutaman kerran tarkistaaksemme jäljellä olevan ajan, jonka avain on olemassa tietovarastossa.

Kuten odotettiin, aika vähenee ja lopulta RecoveryURL:UserID:1000 avain poistetaan. Seuraava on tulos 5 minuutin kuluttua:

Komento on palauttanut -2, mikä tarkoittaa, että avain on vanhentunut ja poistettu tietovarastosta.

Joskus saatat joutua poistamaan tiettyyn avaimeen liittyvän aikakatkaisuarvon. Joten PERSIST-komentovaihtoehtoa voidaan käyttää tiettyyn avaimeen liittyvän TTL-arvon poistamiseen.

Luodaan toinen näyteavain ja määritetään sille merkkijonoarvo. Tässä tapauksessa määritämme TTL-arvon millisekunteina ohittamalla PX vaihtoehto.

aseta KeytoTestPersist 'Tämä vanhenee 60 sekunnin sisällä' PX 50 000

Seuraavaksi tarkistamme jäljellä olevan ajan seuraavasti:

Kuten odotettiin, TTL on laskussa. Kutsutaan GETEX-komentoa PERSIST-vaihtoehdolla seuraavasti:

getex KeytoTestPersist säilyy

Ihannetapauksessa tämä poistaisi tähän avaimeen liittyvän TTL:n. Tarkastetaan avaimen TTL:stä KeytoTestPersist.

TTL-komento palautti -1, mikä tarkoittaa, että avaimeen ei liity TTL:ää KeytoTestPersist.

Samoin, GETEX -komentoa voidaan käyttää avainten vanhenemisajan asettamiseen UNIX-aikaleimassa.

Johtopäätös

Yhteenvetona voidaan todeta, että Redis GETEX -komentoa voidaan käyttää tiettyyn avaimeen tallennettujen merkkijonoarvojen noutamiseen, kuten GET-komento tekee. Ainoa ero GETEX-komentoon on, että se tukee tietyn avaimen vanhenemisaikojen asettamista ja poistamista. Se tukee useita valinnaisia ​​argumentteja vanhenemisajan määrittämiseksi sekunteina, millisekunteina ja UNIX-aikaleiman sekunteina tai millisekunteina. Kuten mainittiin, komento tarjoaa PERSIST-vaihtoehdon, jolla voidaan poistaa tietyn avaimen TTL. Kaiken kaikkiaan GETEX-komento toimii jatkuvalla aikamonimutkaisuudella.