EVAL dan Lingkungan Lua Redis
Jalankan skrip Lua dengan EVAL, pahami KEYS/ARGV, dan caching skrip.
EVAL dan Lingkungan Lua Redis adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Mengapa Lua di Redis?
Redis memungkinkan Anda menjalankan skrip Lua di dalam server dengan EVAL. Skrip dijalankan secara atomik — tidak ada perintah Redis lain yang berjalan secara bersamaan, sehingga operasi bertahap menjadi aman.
Perintah EVAL
EVAL script numkeys key [key ...] arg [arg ...] — skrip mengakses kunci melalui tabel KEYS dan argumen melalui tabel ARGV (berindeks mulai dari 1).
-- Redis CLI:
EVAL "return KEYS[1]" 1 mykey
-- Returns: mykeyMengakses KEYS dan ARGV
Dalam Lua, KEYS dan ARGV adalah tabel 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 vs redis.pcall
redis.call(cmd, ...) menjalankan perintah Redis dan memunculkan kesalahan Lua jika gagal. redis.pcall mengembalikan tabel kesalahan, bukan memunculkan kesalahan.
local ok, err = pcall(function()
redis.call("INVALID_CMD")
end)
if not ok then print("Error caught:", err) endNilai Kembalian
Tipe Lua dikonversi menjadi tipe balasan Redis: angka → bilangan bulat, string → string massal, tabel → array multi-elemen, salah/nihil → balasan nihil, benar → bilangan bulat 1.
Penyimpanan Skrip dalam Cache
Redis menyimpan skrip yang telah dikompilasi berdasarkan SHA1. EVAL pertama mengompilasi dan menyimpannya dalam cache. Pemanggilan berikutnya dengan SHA yang sama (melalui EVALSHA) melewati kompilasi.
Mengakses Tipe Data Redis
Semua perintah Redis standar tersedia melalui redis.call: GET, SET, HGET, LPUSH, EXPIRE, dan lain-lain.
local count = redis.call("INCR", KEYS[1])
redis.call("EXPIRE", KEYS[1], 3600)
return countJaminan Operasi Atomik
Saat skrip Lua berjalan, Redis memblokir semua klien lain. Skrip harus cepat (mikrodetik hingga milidetik). Skrip yang berjalan lama memblokir seluruh server.
Versi Lua di Redis
Redis menyematkan Lua 5.1 (atau yang kompatibel dengan 5.1). Beberapa fitur seperti goto dan bit32 mungkin berbeda. Gunakan pustaka cjson dan cmsgpack yang disediakan Redis untuk JSON/MessagePack.
Praktik Terbaik Penanganan Kesalahan
Gunakan redis.pcall untuk operasi yang mungkin gagal (misalnya, kesalahan tipe). Kembalikan tabel kesalahan terstruktur agar dapat ditafsirkan oleh klien.
Mendiagnosis Skrip Redis
Gunakan redis.log(redis.LOG_DEBUG, "message") untuk menulis pesan debug ke log Redis. Uji skrip di redis-cli dengan EVAL sebelum SCRIPT LOAD.
Pertanyaan tentang Lua di Redis
Apa manfaat utama menjalankan skrip Lua di Redis dengan EVAL?
Ringkasan: EVAL dan Lingkungan Lua Redis
EVAL menjalankan skrip Lua secara atomik di Redis. Akses kunci melalui KEYS[n] dan argumen melalui ARGV[n]. Gunakan redis.call untuk menjalankan perintah. Skrip disimpan dalam cache berdasarkan SHA1. Pastikan skrip tetap cepat agar tidak memblokir server.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “EVAL dan Lingkungan Lua Redis” gratis?
Ya — teks lengkap “EVAL dan Lingkungan Lua Redis” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “EVAL dan Lingkungan Lua Redis”?
Jalankan skrip Lua dengan EVAL, pahami KEYS/ARGV, dan caching skrip. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “EVAL dan Lingkungan Lua Redis” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- EVAL dan Lingkungan Lua Redis
- Operasi Atomik dan Transaksi
- Pembatasan Laju dengan Lua
- SCRIPT LOAD dan EVALSHA