Redis GETEX

Redis Getex



Redis, bellek içi önbellek, veritabanı, zaman serisi, akış motoru, ileti aracısı vb. olarak kullanılan bir anahtar/değer veri deposudur. Redis veri deposu, verileri tutmak için basit bir anahtar/değer çifti biçimi kullandığından, çok belleklidir. verimli. Ayrıca, O(1) ve O(log(N)) gibi düşük zaman karmaşıklıkları ile sorgulama hızı çok yüksektir. Redis anahtarları, diziler, kümeler, karmalar, sıralanmış kümeler ve listeler gibi farklı veri yapılarını tutabilir.

Genellikle, GET ve SET komutları, belirli bir Redis anahtarında depolanan dize türü değerleri depolamak ve almak için kullanılır. Bu iki komut, sabit zaman karmaşıklığı ile çalışır.







Ek olarak, verilen bir anahtarda saklanan dize değerlerini okumak için GETEX komutu kullanılabilir. Ancak bu komut paralel yazma işlemiyle de ilişkilidir. Bu kılavuz, GETEX komut sözdizimine, seçeneklerine ve kullanım durumlarına odaklanacaktır.



Redis Anahtarının TTL'si

Yaşam süresi (TTL) değeri, belirli bir veri parçasının sona erme süresidir. Genellikle bir TTL, veritabanı satırlarıyla ilişkilendirilebilir. Redis tuşlarıyla da bir zaman aşımı ayarlanabilir. Böylece, bir Redis istemcisi, veri deposunda belirli bir anahtarın bulunacağı kalan saniyeleri kontrol edebilir. Redis, belirli bir anahtarın yaşam süresini kontrol etmek için bir TTL komutu sunar. Belirtilen bir anahtarla ilişkili bir zaman aşımı yoksa, TTL komutu -1 değerini döndürür. Belirli bir anahtarın kalan süresini kontrol etmek için sonraki bölümlerde TTL komutunu kullanacağız.



GETEX Komutanlığı

Vurgulandığı gibi, GETEX komutu, belirtilen anahtar için bir sona erme süresi ayarlamak için kullanılabilmesi dışında, GET komutuna daha çok benzer. Ayrıca, bir komut seçeneği, belirli bir anahtardan bir zaman aşımı değerini kaldırabilir. GETEX komut sözdizimi aşağıdaki gibidir:





GETEX anahtarı [ EX timeout_in_saniye | PX timeout_in_milisaniye | EXAT timeout_in_unix-zaman-saniye | PXAT timeout_in_unix-zaman-milisaniye | DEVAM ]

anahtar: Bu, bir dize değerine işaret eden anahtardır.

Aşağıdaki isteğe bağlı bağımsız değişkenler, saniye veya milisaniye cinsinden bir zaman aşımı ayarlamak için kullanılabilir.



ESKİ: Bu, belirli bir anahtar için saniye cinsinden sona erme süresini ayarlayacaktır.

PX: Anahtar zaman aşımı değeri milisaniye cinsinden ayarlanacaktır.

Ayrıca, aşağıdaki komut seçeneklerini kullanarak saniye veya milisaniye cinsinden bir UNIX zaman damgası değeri belirtebiliriz. EXAT ve PXAT :

EXAT: Sona erme süresi UNIX zaman damgası biçiminde ayarlanacak ve zaman damgası saniye cinsinden olacaktır.

PXAT: Belirli bir Redis anahtarının zaman aşımı, milisaniye cinsinden bir UNIX zaman damgası olarak ayarlanacaktır.

DEVAM: Bunu belirterek, belirtilen bir anahtarla ilişkili yaşama süresini kaldırabilirsiniz.

GETEX komutu, belirtilen anahtarın değerini döndürür. Bu komut yalnızca dize türü değerlerle çalışır, karmalar, listeler, sıralanmış kümeler vb. ile çalışmaz. Dize olmayan bir değerle ilişkili bir anahtar belirtirseniz, komut bir hata döndürür. Ayrıca, anahtarın süresi dolmuşsa veya mevcut değilse, komut geri dönecektir. sıfır.

Aşağıdaki bölümde, GETEX komutunun pratik kullanımını ele alacağız.

Kullanım Durumu — Parola Kurtarma/OTP'ler için Geçici Sıfırlama Bağlantısı veya PIN Kodu Oluşturma

Bir web barındırma şirketi, kayıtlı kullanıcılar için bir şifre kurtarma özelliği sağlıyor. Güvenlik önlemi olarak, kullanıcıya 5 dakika içinde süresi dolacak yeni bir URL bağlantısı gönderirler. Şirket, Redis veri deposunu uzun süredir kullanıyor ve belirli bir kullanıcı için canlı değere bir süre ayarlamak için GETEX komutunu kullanıyor.

user_id 1000'e sahip bir kullanıcının parola kurtarma isteğinde bulunduğunu varsayalım. Böylece, kurtarma URL'si anahtarda saklanabilir. RecoveryURL:Kullanıcı Kimliği:1000 . Kurtarma URL'sini aşağıdaki gibi saklamak için SET komutunu kullanabiliriz:

Ayarlamak RecoveryURL:Kullanıcı Kimliği: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Dize URL'sinin anahtarda düzgün bir şekilde saklanıp saklanmadığını kontrol edelim. RecoveryURL:Kullanıcı Kimliği:1000. GETEX komutunu aşağıdaki gibi kullanabiliriz:

getex RecoveryURL:Kullanıcı Kimliği: 1000

Önceki komutun çıktısı aşağıda gösterilmiştir:

GETEX komutu yerine GET komutunu kullandıysak çıktı aynı olacaktır.

Bu anahtarla bir son kullanma süresinin ilişkilendirilip ilişkilendirilmediğini kontrol etmek için TTL komutunu kullanalım.

Ttl RecoveryURL:Kullanıcı Kimliği: 1000

Beklendiği gibi, -1, TTL komutu tarafından döndürüldü; bu, belirtilen anahtarla ilişkili bir son kullanma süresi olmadığı anlamına gelir.

Bu örneğe göre, barındırma şirketinin kurtarma URL'si için 5 dakikalık bir zaman aşımı ayarlaması gerekiyor. Yani, kullanacağız ESKİ komut seçeneği. 5 dakika 300 saniye olduğu için GETEX komutunu şu şekilde kurabiliriz:

getex RecoveryURL:Kullanıcı Kimliği: 1000 ESKİ 500

Anahtarın veri deposunda bulunacağı kalan süreyi incelemek için TTL komutunu birkaç kez çalıştıralım.

Beklendiği gibi, zaman azalıyor ve sonunda, RecoveryURL:Kullanıcı Kimliği:1000 anahtar kaldırılacaktır. 5 dakika sonra çıktı aşağıdaki gibidir:

-2, komut tarafından döndürüldü, bu, anahtarın süresinin dolduğu ve veri deposundan silindiği anlamına gelir.

Bazen, belirli bir anahtarla ilişkili zaman aşımı değerini kaldırmanız gerekebilir. Bu nedenle, belirtilen bir anahtarla ilgili bir TTL değerini silmek için PERSIST komut seçeneği kullanılabilir.

Başka bir örnek anahtar oluşturalım ve ona bir string değeri atayalım. Bu durumda TTL değerini milisaniye cinsinden belirteceğiz. PX seçenek.

Ayarlamak KeytoTestSürekli 'Bu 60 saniye içinde sona erecek' PX 50000

Ardından, kalan süreyi aşağıdaki gibi kontrol edeceğiz:

Beklendiği gibi, TTL düşüyor. PERSIST seçeneği ile GETEX komutunu aşağıdaki gibi çağıralım:

getex KeytoTestPersist devam ediyor

İdeal olarak, bu, bu anahtarla ilişkili TTL'yi kaldırır. Anahtar için TTL'yi inceleyelim KeytoTestPersist.

TTL komutu, -1'i döndürdü; bu, anahtarla hiçbir TTL'nin ilişkilendirilmediği anlamına gelir. KeytoTestPersist.

Benzer şekilde, GETEX komutu, UNIX zaman damgasındaki anahtarların sona erme süresini ayarlamak için kullanılabilir.

Çözüm

Özetle, Redis GETEX komutu, GET komutunun yaptığı gibi, belirli bir anahtarda depolanan dize değerlerini almak için kullanılabilir. GETEX komutunun tek farkı, belirli bir anahtar için son kullanma sürelerinin ayarlanmasını ve kaldırılmasını desteklemesidir. Saniye, milisaniye ve UNIX zaman damgası saniye veya milisaniye cinsinden sona erme süresini belirtmek için birkaç isteğe bağlı bağımsız değişkeni destekler. Tartışıldığı gibi, komut, belirli bir anahtar için ilişkili TTL'yi kaldırmak için SÜREKLİ seçeneğini sunar. Genel olarak, GETEX komutu sabit zaman karmaşıklığı ile çalışır.