Á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: 1000Az 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 500Futtassuk 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 50000Ezutá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állIdeá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.