Lua Academy · Les

SCRIPT LOAD en EVALSHA

Laad scripts met SCRIPT LOAD en voer ze voor efficiëntie uit op basis van SHA1

Les 4 van 413 stappen

SCRIPT LOAD en EVALSHA is een gratis Lua Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.

Het probleem met EVAL

EVAL verstuurt bij elke aanroep de volledige scripttekst. Voor vaak uitgevoerde scripts verspilt dit bandbreedte. SCRIPT LOAD + EVALSHA lossen dit op door het script één keer te laden en het aan te roepen met een SHA1-hash.

SCRIPT LOAD

SCRIPT LOAD script compileert het script, slaat het op in Redis en geeft de SHA1-hash terug. Het script blijft in de cache staan totdat de server opnieuw wordt gestart of SCRIPT FLUSH wordt aangeroepen.

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

EVALSHA

EVALSHA sha1 numkeys [keys] [args] voert het eerder geladen script uit dat aan de hand van zijn SHA1 wordt geïdentificeerd. De opdracht mislukt met NOSCRIPT als het script niet in de cache staat.

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

Toepassingspatroon

Bij het opstarten van de toepassing: laad alle scripts met SCRIPT LOAD en sla hun SHA1's op. Gebruik daarna EVALSHA voor alle aanroepen tijdens de uitvoering.

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-fout afhandelen

Als Redis opnieuw wordt gestart, gaan gecachte scripts verloren. Vang NOSCRIPT-fouten op en val terug op EVAL om het script opnieuw te laden.

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 ...] controleert of scripts in de cache staan. De opdracht geeft voor elk gecachet script 1 terug en voor elk ontbrekend script 0. Gebruik dit om de cache na een herstart vooraf te vullen.

SCRIPT FLUSH

SCRIPT FLUSH verwijdert alle gecachte scripts uit het Redis-geheugen. Gebruik dit tijdens implementaties wanneer scripts wijzigen.

Scriptversies beheren

Wanneer een script verandert, verandert ook zijn SHA1. Sla SHA1's op met versienummers en werk ze na de implementatie bij.

Bandbreedte besparen

Voor een script van 500 bytes dat 10.000 keer per seconde wordt aangeroepen, bespaart EVALSHA 5 MB/s aan Redis-verkeer ten opzichte van EVAL. Op grote schaal is dat aanzienlijk.

Redis Cluster met EVALSHA

In de clustermodus werkt EVALSHA net als EVAL wat slotbeperkingen betreft: alle KEYS moeten zich in hetzelfde slot bevinden.

Beste werkwijze

Gebruik in productie altijd EVALSHA nadat je scripts bij het opstarten hebt geladen. Implementeer de NOSCRIPT-terugvaloptie voor veerkracht na het opnieuw starten van Redis.

Vraag over EVALSHA

Wat gebruikt EVALSHA in plaats van de scripttekst?

Samenvatting: SCRIPT LOAD en EVALSHA

Laad scripts één keer met SCRIPT LOAD om een SHA1 te verkrijgen. Gebruik EVALSHA voor alle volgende aanroepen om bandbreedte te besparen. Handel NOSCRIPT-fouten af door het script opnieuw te laden. SCRIPT EXISTS controleert de cachestatus; SCRIPT FLUSH wist de cache.

Gratis beginnen

Leer Lua met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
40
Lessen
159

Veelgestelde vragen

Is de les “SCRIPT LOAD en EVALSHA” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “SCRIPT LOAD en EVALSHA”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.

Wat leer ik in “SCRIPT LOAD en EVALSHA”?

Laad scripts met SCRIPT LOAD en voer ze voor efficiëntie uit op basis van SHA1 Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Lua Academy te beginnen?

Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “SCRIPT LOAD en EVALSHA”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Lua Academy?

Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. EVAL en de Redis Lua-omgeving
  2. Atomaire bewerkingen en transacties
  3. Rate limiting met Lua
  4. SCRIPT LOAD en EVALSHA
← Terug naar Lua Academy