0Pricing
Lua Academy · Ders

SCRIPT LOAD ve EVALSHA

Betikleri SCRIPT LOAD ile yükleyin ve verimlilik için SHA1 üzerinden çalıştırın.

SCRIPT LOAD ve EVALSHA, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

EVAL ile İlgili Sorun

EVAL, her çağrıda betiğin tam metnini gönderir. Sık yürütülen betikler için bu, bant genişliğini boşa harcar. SCRIPT LOAD + EVALSHA, betiği bir kez yükleyip SHA1 karmasıyla çağırarak bu sorunu çözer.

SCRIPT LOAD

SCRIPT LOAD script betiği derler, Redis'te önbelleğe alır ve SHA1 karmasını döndürür. Betik, sunucu yeniden başlatılana veya SCRIPT FLUSH çağrılana kadar önbellekte kalır.

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

EVALSHA

EVALSHA sha1 numkeys [keys] [args], SHA1'iyle tanımlanan daha önce yüklenmiş betiği yürütür. Betik önbelleğe alınmamışsa NOSCRIPT hatasıyla başarısız olur.

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

Uygulama Kalıbı

Uygulama başlatılırken: tüm betikleri SCRIPT LOAD ile yükleyip SHA1 değerlerini saklayın. Ardından çalışma zamanındaki tüm çağrılar için EVALSHA kullanın.

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")

NOSCRIPT Hatasını İşleme

Redis yeniden başlatılırsa önbelleğe alınmış betikler kaybolur. NOSCRIPT hatalarını yakalayın ve yeniden yüklemek için EVAL kullanmaya geçin.

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 ...], betiklerin önbelleğe alınıp alınmadığını denetler. Önbelleğe alınmış her betik için 1, eksik olanlar için 0 döndürür. Yeniden başlatmanın ardından önbelleği önceden doldurmak için kullanın.

SCRIPT FLUSH

SCRIPT FLUSH, Redis belleğindeki önbelleğe alınmış tüm betikleri kaldırır. Betikler değiştiğinde dağıtımlar sırasında kullanın.

Betik Sürümlendirme

Bir betik değiştiğinde SHA1'i de değişir. SHA1 değerlerini sürüm numaralarıyla birlikte saklayın ve dağıtımdan sonra güncelleyin.

Bant Genişliği Tasarrufu

Saniyede 10.000 kez çağrılan 500 baytlık bir betik için EVALSHA, EVAL'e kıyasla Redis trafiğinde 5 MB/s tasarruf sağlar. Büyük ölçekte bu önemli bir kazançtır.

EVALSHA ile Redis Kümesi

Küme kipinde EVALSHA, yuva kısıtlamaları bakımından EVAL ile aynı şekilde çalışır: tüm KEYS aynı yuvada bulunmalıdır.

En İyi Uygulama

Başlangıçta betikleri yükledikten sonra üretimde her zaman EVALSHA kullanın. Redis yeniden başlatıldıktan sonra dayanıklılık sağlamak için NOSCRIPT geri dönüşünü uygulayın.

EVALSHA Sorusu

EVALSHA, betik metni yerine ne kullanır?

Özet: SCRIPT LOAD ve EVALSHA

SHA1 almak için betikleri SCRIPT LOAD ile bir kez yükleyin. Bant genişliğinden tasarruf etmek için sonraki tüm çağrılarda EVALSHA kullanın. NOSCRIPT hatalarını yeniden yükleyerek işleyin. SCRIPT EXISTS önbellek durumunu denetler; SCRIPT FLUSH önbelleği temizler.

Sıkça Sorulan Sorular

“SCRIPT LOAD ve EVALSHA” dersi ücretsiz mi?

Evet — “SCRIPT LOAD ve EVALSHA” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“SCRIPT LOAD ve EVALSHA” dersinde ne öğreneceğim?

Betikleri SCRIPT LOAD ile yükleyin ve verimlilik için SHA1 üzerinden çalıştırın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“SCRIPT LOAD ve EVALSHA” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. EVAL ve Redis Lua Ortamı
  2. Atomik İşlemler ve İşlemler
  3. Lua ile Hız Sınırlama
  4. SCRIPT LOAD ve EVALSHA
← Lua Academy Sayfasına Dön