EVAL dan Persekitaran Lua Redis
Laksanakan skrip Lua dengan EVAL, fahami KEYS/ARGV dan pencachean skrip.
EVAL dan Persekitaran Lua Redis ialah pelajaran Lua Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Lua Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Mengapa Lua dalam Redis?
Redis membenarkan skrip Lua dijalankan di dalam pelayan dengan EVAL. Skrip dilaksanakan secara atomik — tiada arahan Redis lain dijalankan secara serentak, sekali gus membolehkan operasi berbilang langkah yang selamat.
Arahan EVAL
EVAL script numkeys key [key ...] arg [arg ...] — skrip mengakses kunci melalui jadual KEYS dan argumen melalui jadual ARGV (diindeks bermula dengan 1).
-- Redis CLI:
EVAL "return KEYS[1]" 1 mykey
-- Returns: mykeyMengakses KEYS dan ARGV
Dalam Lua, KEYS dan ARGV ialah jadual global yang diisi oleh EVAL.
EVAL "
local key = KEYS[1]
local val = ARGV[1]
redis.call('SET', key, val)
return redis.call('GET', key)
" 1 greeting helloredis.call berbanding redis.pcall
redis.call(cmd, ...) melaksanakan arahan Redis dan mencetuskan ralat Lua apabila gagal. redis.pcall memulangkan jadual ralat dan bukannya mencetuskan ralat.
local ok, err = pcall(function()
redis.call("INVALID_CMD")
end)
if not ok then print("Error caught:", err) endNilai Pulangan
Jenis Lua ditukar kepada jenis balasan Redis: nombor → integer, rentetan → rentetan pukal, jadual → tatasusunan berbilang pukal, false/nil → balasan nil, true → integer 1.
Penyimpanan Skrip dalam Tembolok
Redis menyimpan skrip yang dikompil dalam tembolok berdasarkan SHA1. EVAL yang pertama mengompil dan menyimpan skrip. Panggilan seterusnya dengan SHA yang sama (melalui EVALSHA) melangkau pengompilan.
Akses Jenis Data Redis
Semua arahan Redis standard tersedia melalui redis.call: GET, SET, HGET, LPUSH, EXPIRE dan sebagainya.
local count = redis.call("INCR", KEYS[1])
redis.call("EXPIRE", KEYS[1], 3600)
return countJaminan Keatomikan
Semasa skrip Lua berjalan, Redis menyekat semua klien lain. Skrip hendaklah pantas, iaitu dalam julat mikrosaat hingga milisaat. Skrip yang berjalan lama menyekat seluruh pelayan.
Versi Lua dalam Redis
Redis menyertakan Lua 5.1 (atau yang serasi dengan 5.1). Sesetengah ciri seperti goto dan bit32 mungkin berbeza. Gunakan pustaka cjson dan cmsgpack yang disediakan Redis untuk JSON/MessagePack.
Amalan Terbaik Pengendalian Ralat
Gunakan redis.pcall untuk operasi yang mungkin gagal (contohnya, ralat jenis). Pulangkan jadual ralat berstruktur untuk ditafsirkan oleh klien.
Menyahpepijat Skrip Redis
Gunakan redis.log(redis.LOG_DEBUG, "message") untuk menulis mesej nyahpepijat ke dalam catatan Redis. Uji skrip dalam redis-cli dengan EVAL sebelum SCRIPT LOAD.
Soalan Lua Redis
Apakah manfaat utama menjalankan skrip Lua dalam Redis dengan EVAL?
Imbas Kembali: EVAL dan Persekitaran Lua Redis
EVAL menjalankan skrip Lua secara atomik dalam Redis. Akses kunci melalui KEYS[n] dan argumen melalui ARGV[n]. Gunakan redis.call untuk arahan. Skrip disimpan dalam tembolok berdasarkan SHA1. Pastikan skrip pantas supaya pelayan tidak tersekat.
Pelajari Lua dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “EVAL dan Persekitaran Lua Redis” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Lua Academy, termasuk “EVAL dan Persekitaran Lua Redis”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “EVAL dan Persekitaran Lua Redis”?
Laksanakan skrip Lua dengan EVAL, fahami KEYS/ARGV dan pencachean skrip. Anda berlatih Lua Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Lua Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Lua Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “EVAL dan Persekitaran Lua Redis” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- EVAL dan Persekitaran Lua Redis
- Operasi Atom dan Transaksi
- Pengehadan Kadar dengan Lua
- SCRIPT LOAD dan EVALSHA