Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Skrip Lua
Valkey dan Redis OSS mendukung lebih dari 200 perintah, termasuk yang menjalankan skrip Lua. Namun, ketika datang ke skrip Lua, ada beberapa jebakan yang dapat mempengaruhi memori dan ketersediaan Valkey atau Redis. OSS
Skrip Lua yang tidak diparameterisasi
Setiap skrip Lua di-cache di OSS server Valkey atau Redis sebelum berjalan. Skrip Lua yang tidak diparameterisasi adalah unik, yang dapat menyebabkan OSS server Valkey atau Redis menyimpan sejumlah besar skrip Lua dan menghabiskan lebih banyak memori. Untuk mengurangi ini, pastikan bahwa semua skrip Lua diparameterisasi dan secara teratur melakukan SCRIPT FLUSH untuk membersihkan skrip Lua yang di-cache jika diperlukan.
Contoh berikut menunjukkan cara menggunakan skrip yang diparameterisasi. Pertama, kita memiliki contoh pendekatan tanpa parameterisasi yang menghasilkan tiga skrip Lua yang di-cache yang berbeda dan tidak disarankan:
eval "return redis.call('set','key1','1')" 0 eval "return redis.call('set','key2','2')" 0 eval "return redis.call('set','key3','3')" 0
Sebagai gantinya, gunakan pola berikut untuk membuat skrip tunggal yang dapat menerima parameter yang diteruskan:
eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key1 1 eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key2 2 eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key3 3
Skrip Lua yang berjalan lama
Skrip Lua dapat menjalankan beberapa perintah secara atom, sehingga bisa memakan waktu lebih lama untuk diselesaikan daripada perintah Valkey atau Redis biasa. OSS Jika skrip Lua hanya menjalankan operasi hanya-baca, Anda dapat menghentikannya di tengah proses. Namun, segera setelah skrip Lua melakukan operasi penulisan, prosesnya tidak dapat dihentikan dan harus dijalankan hingga selesai. Skrip Lua yang berjalan lama yang bermutasi dapat menyebabkan OSS server Valkey atau Redis tidak responsif untuk waktu yang lama. Untuk memitigasi masalah ini, hindari skrip Lua yang berjalan lama dan uji skrip di lingkungan praproduksi.
Skrip Lua dengan penulisan stealth
Ada beberapa cara skrip Lua dapat terus menulis data baru ke Valkey atau Redis OSS bahkan ketika Valkey atau Redis selesai: OSS maxmemory
Skrip dimulai ketika OSS server Valkey atau Redis berada di bawah
maxmemory
, dan berisi beberapa operasi tulis di dalamnyaPerintah tulis pertama skrip tidak menghabiskan memori (sepertiDEL), diikuti oleh lebih banyak operasi tulis yang menghabiskan memori
Anda dapat mengurangi masalah ini dengan mengonfigurasi kebijakan penggusuran yang tepat di server Valkey atau Redis selain. OSS
noeviction
Hal ini memungkinkan Redis OSS untuk mengusir item dan membebaskan memori di antara skrip Lua.