0Pricing
Lua Academy · Pelajaran

SCRIPT LOAD dan EVALSHA

Muat skrip dengan SCRIPT LOAD dan jalankan berdasarkan SHA1 secara efisien.

SCRIPT LOAD dan EVALSHA adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Masalah dengan EVAL

EVAL mengirimkan teks skrip lengkap pada setiap pemanggilan. Untuk skrip yang sering dijalankan, hal ini memboroskan bandwidth. SCRIPT LOAD + EVALSHA mengatasinya dengan memuat skrip sekali lalu memanggilnya berdasarkan hash SHA1.

SCRIPT LOAD

SCRIPT LOAD script mengompilasi skrip, menyimpannya dalam cache Redis, dan mengembalikan hash SHA1-nya. Skrip tetap tersimpan dalam cache hingga server dimulai ulang atau SCRIPT FLUSH dipanggil.

# Redis CLI:
SCRIPT LOAD "return redis.call('GET', KEYS[1])"
# Returns: "abc123...sha1hash..."

EVALSHA

EVALSHA sha1 numkeys [keys] [args] menjalankan skrip yang sebelumnya dimuat dan diidentifikasi oleh SHA1-nya. Perintah ini gagal dengan NOSCRIPT jika skrip tidak tersimpan dalam cache.

# Redis CLI:
EVALSHA abc123...sha1hash... 1 mykey
# Returns the same result as EVAL

Pola Aplikasi

Saat aplikasi dimulai: muat semua skrip dengan SCRIPT LOAD, lalu simpan SHA1-nya. Kemudian gunakan EVALSHA untuk semua pemanggilan saat aplikasi berjalan.

local redis = require("redis")
local scriptText = [[
  local v = redis.call("GET", KEYS[1])
  return v
]]
local sha = redis:script_load(scriptText)
-- Later:
redis:evalsha(sha, 1, "mykey")

Menangani Kesalahan NOSCRIPT

Jika Redis dimulai ulang, skrip yang tersimpan dalam cache akan hilang. Tangkap kesalahan NOSCRIPT dan gunakan EVAL sebagai cadangan untuk memuat ulang.

local function safeEvalsha(r, sha, script, numkeys, ...)
  local ok, result = pcall(r.evalsha, r, sha, numkeys, ...)
  if not ok and result:find("NOSCRIPT") then
    sha = r:script_load(script)
    result = r:evalsha(sha, numkeys, ...)
  end
  return result
end

SCRIPT EXISTS

SCRIPT EXISTS sha1 [sha1 ...] memeriksa apakah skrip tersimpan dalam cache. Perintah ini mengembalikan 1 untuk setiap skrip yang tersimpan dan 0 untuk skrip yang tidak ada. Gunakan untuk melakukan pemanasan awal setelah server dimulai ulang.

SCRIPT FLUSH

SCRIPT FLUSH menghapus semua skrip yang tersimpan dalam cache dari memori Redis. Gunakan selama penerapan ketika skrip berubah.

Pembuatan Versi Skrip

Saat skrip berubah, SHA1-nya juga berubah. Simpan SHA1 beserta nomor versi dan perbarui setelah penerapan.

Penghematan Bandwidth

Untuk skrip berukuran 500 byte yang dipanggil 10.000 kali per detik, EVALSHA menghemat 5 MB/detik lalu lintas Redis dibandingkan EVAL. Penghematan ini signifikan pada skala besar.

Redis Cluster dengan EVALSHA

Dalam mode klaster, EVALSHA bekerja sama seperti EVAL terkait pembatasan slot: semua KEYS harus berada di slot yang sama.

Praktik Terbaik

Selalu gunakan EVALSHA dalam produksi setelah memuat skrip saat aplikasi dimulai. Terapkan cadangan NOSCRIPT agar tetap tangguh setelah Redis dimulai ulang.

Pertanyaan tentang EVALSHA

Apa yang digunakan EVALSHA sebagai pengganti teks skrip?

Ringkasan: SCRIPT LOAD dan EVALSHA

Muat skrip sekali dengan SCRIPT LOAD untuk mendapatkan SHA1. Gunakan EVALSHA untuk semua pemanggilan berikutnya guna menghemat bandwidth. Tangani kesalahan NOSCRIPT dengan memuat ulang skrip. SCRIPT EXISTS memeriksa status cache; SCRIPT FLUSH menghapusnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “SCRIPT LOAD dan EVALSHA” gratis?

Ya — teks lengkap “SCRIPT LOAD dan EVALSHA” 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 “SCRIPT LOAD dan EVALSHA”?

Muat skrip dengan SCRIPT LOAD dan jalankan berdasarkan SHA1 secara efisien. 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 4 dari 4.

Berapa lama pelajaran “SCRIPT LOAD dan EVALSHA” 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

  1. EVAL dan Lingkungan Lua Redis
  2. Operasi Atomik dan Transaksi
  3. Pembatasan Laju dengan Lua
  4. SCRIPT LOAD dan EVALSHA
← Kembali ke Lua Academy