Lua Academy · Pelajaran

EVAL dan Persekitaran Lua Redis

Laksanakan skrip Lua dengan EVAL, fahami KEYS/ARGV dan pencachean skrip.

Pelajaran 1 daripada 413 langkah

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: mykey

Mengakses 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 hello

redis.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) end

Nilai 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 count

Jaminan 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.

Percuma untuk bermula

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

  1. EVAL dan Persekitaran Lua Redis
  2. Operasi Atom dan Transaksi
  3. Pengehadan Kadar dengan Lua
  4. SCRIPT LOAD dan EVALSHA
← Kembali ke Lua Academy