Redis GETEX

Redis Getex



Redis adalah penyimpanan data nilai kunci yang digunakan sebagai cache dalam memori, basis data, deret waktu, mesin streaming, perantara pesan, dll. Karena penyimpanan data Redis menggunakan format pasangan nilai kunci sederhana untuk menyimpan data, ini sangat memori efisien. Selain itu, kecepatan kueri sangat tinggi dengan kompleksitas waktu yang rendah seperti O(1) dan O(log(N)). Kunci redis dapat menyimpan struktur data yang berbeda, seperti string, set, hash, set yang diurutkan, dan daftar.

Biasanya, perintah GET dan SET digunakan untuk menyimpan dan mengambil nilai tipe string yang disimpan pada kunci Redis yang diberikan. Kedua perintah ini beroperasi dengan kompleksitas waktu yang konstan.







Selain itu, perintah GETEX tersedia untuk membaca nilai string yang disimpan pada kunci yang diberikan. Tetapi perintah ini juga terkait dengan operasi penulisan paralel. Panduan ini akan fokus pada sintaks perintah GETEX, opsinya, dan kasus penggunaan.



TTL dari Kunci Redis

Nilai waktu untuk hidup (TTL) adalah waktu kedaluwarsa dari bagian data tertentu. Biasanya, TTL dapat diasosiasikan dengan baris database. Batas waktu juga dapat diatur dengan tombol Redis. Jadi, klien Redis dapat memeriksa detik yang tersisa bahwa kunci yang diberikan akan tersedia di penyimpanan data. Redis menawarkan perintah TTL untuk memeriksa nilai waktu hidup dari kunci yang diberikan. Jika tidak ada batas waktu yang dikaitkan dengan kunci yang ditentukan, perintah TTL mengembalikan -1. Kami akan menggunakan perintah TTL di bagian selanjutnya untuk memeriksa sisa waktu dari kunci yang diberikan.



Perintah GETEX

Seperti yang disorot, perintah GETEX lebih mirip dengan perintah GET, kecuali bahwa itu dapat digunakan untuk mengatur waktu kedaluwarsa untuk kunci yang ditentukan. Selanjutnya, opsi perintah dapat menghapus nilai batas waktu dari kunci yang diberikan. Sintaks perintah GETEX adalah sebagai berikut:





kunci GETEX [ EX timeout_in_seconds | PX timeout_in_milliseconds | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milidetik | PERSIST ]

kunci: Ini adalah kunci yang menunjuk ke nilai string.

Argumen opsional berikut dapat digunakan untuk menyetel batas waktu dalam detik atau milidetik.



MANTAN: Ini akan mengatur waktu kedaluwarsa dalam hitungan detik untuk kunci yang diberikan.

PX: Nilai batas waktu kunci akan ditetapkan dalam milidetik.

Selain itu, kita dapat menentukan nilai stempel waktu UNIX dalam hitungan detik atau milidetik menggunakan opsi perintah berikut: EXAT dan PXAT :

EXAT: Waktu kedaluwarsa akan diatur dalam format stempel waktu UNIX, dan stempel waktu akan dalam hitungan detik.

PXAT: Batas waktu untuk kunci Redis yang diberikan akan ditetapkan sebagai stempel waktu UNIX dalam milidetik.

BERTAHAN: Dengan menentukan ini, Anda dapat menghapus nilai time to live yang terkait dengan kunci yang ditentukan.

Perintah GETEX mengembalikan nilai dari kunci yang ditentukan. Perintah ini hanya berfungsi dengan nilai tipe string tetapi tidak hash, daftar, kumpulan yang diurutkan, dll. Jika Anda menentukan kunci yang terkait dengan nilai non-string, perintah akan mengembalikan kesalahan. Selain itu, jika kuncinya sudah kedaluwarsa atau tidak ada, perintah akan kembali nol.

Pada bagian berikut, kita akan membahas penggunaan praktis dari perintah GETEX.

Kasus Penggunaan — Tautan Setel Ulang Sementara atau Pembuatan Kode PIN untuk Pemulihan Kata Sandi/OTP

Sebuah perusahaan web hosting menyediakan fitur pemulihan password untuk pengguna terdaftar. Sebagai tindakan keamanan, mereka mengirim tautan URL baru ke pengguna, yang akan kedaluwarsa dalam waktu 5 menit. Perusahaan telah menggunakan penyimpanan data Redis untuk waktu yang lama dan menggunakan perintah GETEX untuk menetapkan nilai waktu hidup untuk pengguna tertentu.

Mari kita asumsikan bahwa pengguna dengan user_id 1000 meminta pemulihan kata sandi. Jadi, URL pemulihan dapat disimpan di kunci RecoveryURL:UserID:1000 . Kita dapat menggunakan perintah SET untuk menyimpan URL pemulihan sebagai berikut:

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

Mari kita periksa apakah URL string disimpan dengan benar di kunci RecoveryURL:UserID:1000. Kita dapat menggunakan perintah GETEX sebagai berikut:

getex RecoveryURL:UserID: 1000

Output dari perintah sebelumnya ditunjukkan sebagai berikut:

Jika kita telah menggunakan perintah GET alih-alih perintah GETEX, hasilnya akan sama.

Mari gunakan perintah TTL untuk memeriksa apakah waktu kedaluwarsa terkait dengan kunci ini.

Ttl RecoveryURL:UserID: 1000

Seperti yang diharapkan, -1 telah dikembalikan oleh perintah TTL, yang berarti tidak ada waktu kedaluwarsa yang terkait dengan kunci yang ditentukan.

Sesuai contoh ini, perusahaan hosting perlu menetapkan batas waktu 5 menit untuk URL pemulihan. Jadi, kita akan menggunakan MANTAN opsi perintah. Karena 5 menit adalah 300 detik, kita dapat membuat perintah GETEX sebagai berikut:

getex RecoveryURL:UserID: 1000 MANTAN 500

Mari kita jalankan perintah TTL beberapa kali untuk memeriksa sisa waktu bahwa kunci akan ada di penyimpanan data.

Seperti yang diharapkan, waktunya berkurang, dan akhirnya, RecoveryURL:UserID:1000 kunci akan dihapus. Berikut adalah output setelah 5 menit:

-2 telah dikembalikan oleh perintah, yang berarti kunci kedaluwarsa dan dihapus dari penyimpanan data.

Terkadang, Anda mungkin perlu menghapus nilai batas waktu yang terkait dengan kunci yang diberikan. Jadi, opsi perintah PERSIST dapat digunakan untuk menghapus nilai TTL yang terkait dengan kunci yang ditentukan.

Mari buat kunci sampel lain dan berikan nilai string padanya. Dalam hal ini, kami akan menentukan nilai TTL dalam milidetik dengan melewatkan PX pilihan.

mengatur KeytoTestBertahan 'Ini akan kedaluwarsa dalam 60 detik' PX 50000

Selanjutnya, kami akan memeriksa sisa waktu sebagai berikut:

Seperti yang diharapkan, TTL menurun. Mari kita panggil perintah GETEX dengan opsi PERSIST sebagai berikut:

getex KeytoTestPersist bertahan

Idealnya, ini akan menghapus TTL yang terkait dengan kunci ini. Mari kita periksa TTL untuk kuncinya KeytoTestBertahan.

Perintah TTL mengembalikan -1, yang berarti tidak ada TTL yang dikaitkan dengan kunci KeytoTestBertahan.

Demikian pula, GETEX perintah dapat digunakan untuk mengatur waktu kedaluwarsa untuk kunci di stempel waktu UNIX.

Kesimpulan

Singkatnya, perintah Redis GETEX dapat digunakan untuk mengambil nilai string yang disimpan pada kunci tertentu seperti yang dilakukan oleh perintah GET. Satu-satunya perbedaan dengan perintah GETEX adalah bahwa ia mendukung pengaturan dan menghapus waktu kedaluwarsa untuk kunci yang diberikan. Ini mendukung beberapa argumen opsional untuk menentukan waktu kedaluwarsa dalam detik, milidetik, dan detik atau milidetik stempel waktu UNIX. Seperti yang telah dibahas, perintah menyediakan opsi PERSIST untuk menghapus TTL terkait untuk kunci yang diberikan. Secara keseluruhan, perintah GETEX beroperasi dengan kompleksitas waktu yang konstan.