Redis GETEX

Redis Getex



A Redis egy kulcsérték-adattár, amelyet memórián belüli gyorsítótárként, adatbázisként, idősorként, adatfolyam-motorként, üzenetközvetítőként stb. használnak. Mivel a Redis adattár egyszerű kulcs-érték pár formátumot használ az adatok tárolására, nagyon memóriaigényes. hatékony. Ezen túlmenően, a lekérdezési sebesség nagyon magas, alacsony időbonyolítás mellett, mint például O(1) és O(log(N)). A Redis kulcsok különböző adatstruktúrákat tartalmazhatnak, például karakterláncokat, készleteket, kivonatokat, rendezett halmazokat és listákat.

Általában a GET és a SET parancsokat használják az adott Redis kulcson tárolt karakterlánc típusú értékek tárolására és lekérésére. Ez a két parancs állandó időbonyolítással működik.







Ezenkívül a GETEX parancs elérhető az adott kulcson tárolt karakterlánc-értékek beolvasására. De ez a parancs párhuzamos írási művelethez is kapcsolódik. Ez az útmutató a GETEX parancs szintaxisára, annak lehetőségeire és használati eseteire összpontosít.



Redis kulcs TTL-je

Az életidő (TTL) értéke egy adott adat lejárati ideje. Általában egy TTL adatbázis sorokhoz társítható. Időtúllépés a Redis gombokkal is beállítható. Így a Redis kliens ellenőrizheti, hogy egy adott kulcs hány másodpercben elérhető lesz az adattárban. A Redis egy TTL-parancsot kínál az adott kulcs élesedési idejének ellenőrzésére. Ha egy megadott kulcshoz nincs időkorlát társítva, a TTL parancs -1 értéket ad vissza. A következő részekben a TTL parancsot fogjuk használni az adott kulcs hátralévő idejének ellenőrzésére.



A GETEX Parancsnokság

Mint kiemeltük, a GETEX parancs jobban hasonlít a GET parancshoz, azzal a különbséggel, hogy a megadott kulcs lejárati idejének beállítására használható. Ezenkívül egy parancsopció eltávolíthat egy időtúllépési értéket egy adott kulcsból. A GETEX parancs szintaxisa a következő:





GETEX kulcs [ EX timeout_in_seconds | PX timeout_in_imliseconds | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-miliseconds | TARTOZIK ]

kulcs: Ez az a kulcs, amely egy karakterlánc értékre mutat.

A következő opcionális argumentumok használhatók az időtúllépés beállítására másodpercben vagy ezredmásodpercben.



VOLT: Ezzel beállítja az adott kulcs lejárati idejét másodpercben.

PX: A kulcs időtúllépési értéke ezredmásodpercben lesz beállítva.

Ezenkívül a UNIX időbélyegének értékét is megadhatjuk másodpercben vagy ezredmásodpercben a következő parancsopciók használatával EXAT és PXAT :

EXAT: A lejárati idő UNIX időbélyeg formátumban lesz beállítva, és az időbélyeg másodpercben lesz megadva.

PXAT: Az adott Redis-kulcs időtúllépése UNIX-időbélyegként lesz beállítva ezredmásodpercben.

PERSIST: Ennek megadásával eltávolíthatja a megadott kulccsal társított élesedési időt.

A GETEX parancs a megadott kulcs értékét adja vissza. Ez a parancs csak karakterlánc típusú értékekkel működik, de nem hashekkel, listákkal, rendezett halmazokkal stb. Ha nem karakterlánc-értékhez társított kulcsot ad meg, a parancs hibát ad vissza. Ezenkívül, ha a kulcs már lejárt, vagy nem létezik, a parancs visszatér nulla.

A következő részben a GETEX parancs gyakorlati felhasználásával foglalkozunk.

Használati eset — Ideiglenes visszaállítási hivatkozás vagy PIN-kód generálása jelszó-helyreállításhoz/egyszerre használatos jelszó-helyreállításhoz

Egy web hosting cég jelszó-helyreállítási funkciót biztosít a regisztrált felhasználók számára. Biztonsági okokból új URL linket küldenek a felhasználónak, amely 5 percen belül lejár. A cég már régóta használja a Redis adattárat, és a GETEX paranccsal állítja be az adott felhasználó életbe lépési értékét.

Tegyük fel, hogy egy user_id 1000 felhasználó jelszó-helyreállítást kér. Tehát a helyreállítási URL a kulcsnál tárolható RecoveryURL:UserID:1000 . A SET paranccsal tárolhatjuk a helyreállítási URL-t az alábbiak szerint:

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

Ellenőrizzük, hogy a karakterlánc URL-je megfelelően van-e tárolva a kulcsnál RecoveryURL:UserID:1000. A GETEX parancsot a következőképpen használhatjuk:

getex RecoveryURL:UserID: 1000

Az előző parancs kimenete az alábbiakban látható:

Ha a GET parancsot használtuk a GETEX parancs helyett, akkor a kimenet ugyanaz lesz.

Használjuk a TTL parancsot annak ellenőrzésére, hogy van-e lejárati idő társítva ehhez a kulcshoz.

Ttl RecoveryURL:UserID: 1000

Ahogy az várható volt, a -1 értéket adta vissza a TTL parancs, ami azt jelenti, hogy nincs lejárati idő társítva a megadott kulcshoz.

A példa szerint a tárhelyszolgáltatónak 5 perces időt kell beállítania a helyreállítási URL-hez. Tehát használni fogjuk a VOLT parancs opciót. Mivel 5 perc 300 másodperc, a GETEX parancsot a következőképpen állíthatjuk össze:

getex RecoveryURL:UserID: 1000 VOLT 500

Futtassuk le néhányszor a TTL parancsot, hogy megvizsgáljuk, mennyi ideig marad a kulcs az adattárban.

Ahogy az várható volt, az idő egyre csökken, és végül a RecoveryURL:UserID:1000 kulcs eltávolításra kerül. A következő a kimenet 5 perc után:

A parancs a -2-t adta vissza, ami azt jelenti, hogy a kulcs lejárt és törlődött az adattárból.

Néha előfordulhat, hogy el kell távolítania az adott kulcshoz tartozó időtúllépési értéket. Tehát a PERSIST parancsopció használható egy megadott kulcshoz kapcsolódó TTL érték törlésére.

Hozzon létre egy másik mintakulcsot, és rendeljen hozzá egy karakterlánc értéket. Ebben az esetben a TTL értéket ezredmásodpercben adjuk meg a PX választási lehetőség.

készlet KeytoTestPersist 'Ez 60 másodpercen belül lejár' PX 50000

Ezután ellenőrizzük a hátralévő időt az alábbiak szerint:

Ahogy az várható volt, a TTL csökken. Hívjuk meg a GETEX parancsot a PERSIST opcióval a következőképpen:

getex KeytoTestPersist továbbra is fennáll

Ideális esetben ez eltávolítja a kulcshoz tartozó TTL-t. Vizsgáljuk meg a kulcsot a TTL-ben KeytoTestPersist.

A TTL parancs -1 értéket adott vissza, ami azt jelenti, hogy nincs TTL társítva a kulcshoz KeytoTestPersist.

Hasonlóképpen a GETEX paranccsal beállíthatja a kulcsok lejárati idejét a UNIX időbélyegzőjében.

Következtetés

Összefoglalva, a Redis GETEX parancs használható az adott kulcson tárolt karakterlánc-értékek lekérésére, ahogy a GET parancs teszi. Az egyetlen különbség a GETEX paranccsal szemben, hogy támogatja az adott kulcs lejárati idejének beállítását és eltávolítását. Számos opcionális argumentumot támogat a lejárati idő megadásához másodpercben, ezredmásodpercben és UNIX-időbélyegző másodpercben vagy ezredmásodpercben. Amint már említettük, a parancs a PERSIST opciót biztosítja az adott kulcshoz tartozó társított TTL eltávolításához. Összességében a GETEX parancs állandó időbonyolítással működik.