Lua Academy · Lektion

EVAL og Redis' Lua-miljø

Kør Lua-scripts med EVAL, forstå KEYS/ARGV, og lær om scriptcaching.

Lektion 1 af 413 trin

EVAL og Redis' Lua-miljø er en gratis Lua Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lua Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lua Academy-kurset indeholder 4 lektioner i alt.

Hvorfor Lua i Redis?

Redis gør det muligt at køre Lua-scripts på serveren med EVAL. Scripts udføres atomisk – ingen andre Redis-kommandoer køres samtidig, så du kan udføre sikre operationer i flere trin.

EVAL-kommando

EVAL script numkeys key [key ...] arg [arg ...] – scriptet tilgår nøgler via tabellen KEYS og argumenter via tabellen ARGV (indekseret fra 1).

-- Redis CLI:
EVAL "return KEYS[1]" 1 mykey
-- Returns: mykey

Adgang til KEYS og ARGV

I Lua er KEYS og ARGV globale tabeller, som udfyldes af 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 kontra redis.pcall

redis.call(cmd, ...) udfører en Redis-kommando og udløser en Lua-fejl, hvis den mislykkes. redis.pcall returnerer en fejltabel i stedet for at udløse en fejl.

local ok, err = pcall(function()
  redis.call("INVALID_CMD")
end)
if not ok then print("Error caught:", err) end

Returværdier

Lua-typer konverteres til Redis-svartype: tal → heltal, strenge → bulk-strenge, tabeller → arrays med flere elementer, false/nil → nil-svar, true → heltallet 1.

Caching af scripts

Redis cacher kompilerede scripts efter SHA1. Det første EVAL kompilerer og cacher scriptet. Efterfølgende kald med den samme SHA (via EVALSHA) springer kompileringen over.

Adgang til Redis-datatyper

Alle standard-Redis-kommandoer er tilgængelige via redis.call: GET, SET, HGET, LPUSH, EXPIRE osv.

local count = redis.call("INCR", KEYS[1])
redis.call("EXPIRE", KEYS[1], 3600)
return count

Atomisk garanti

Mens et Lua-script kører, blokerer Redis alle andre klienter. Scripts bør være hurtige og tage mikrosekunder til millisekunder. Langvarige scripts blokerer hele serveren.

Lua-version i Redis

Redis indlejrer Lua 5.1 (eller en 5.1-kompatibel version). Nogle funktioner som goto og bit32 kan afvige. Brug de Redis-leverede biblioteker cjson og cmsgpack til JSON og MessagePack.

Bedste praksis for fejlhåndtering

Brug redis.pcall til operationer, der kan mislykkes (f.eks. typefejl). Returnér strukturerede fejltabeller, som klienten kan fortolke.

Fejlfinding af Redis-scripts

Brug redis.log(redis.LOG_DEBUG, "message") til at skrive fejlfindingsmeddelelser til Redis-loggen. Test scripts i redis-cli med EVAL, før du bruger SCRIPT LOAD.

Spørgsmål om Redis Lua

Hvad er den vigtigste fordel ved at køre Lua-scripts i Redis med EVAL?

Opsummering: EVAL og Redis Lua-miljøet

EVAL kører Lua-scripts atomisk i Redis. Tilgå nøgler via KEYS[n] og argumenter via ARGV[n]. Brug redis.call til kommandoer. Scripts caches efter SHA1. Hold scripts hurtige for at undgå at blokere serveren.

Gratis at komme i gang

Lær Lua med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
40
Lektioner
159

Ofte stillede spørgsmål

Er lektionen “EVAL og Redis' Lua-miljø” gratis?

Ja — alle 3 lektioner i læringssporet Lua Academy, inklusive “EVAL og Redis' Lua-miljø”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lua Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “EVAL og Redis' Lua-miljø”?

Kør Lua-scripts med EVAL, forstå KEYS/ARGV, og lær om scriptcaching. Du øver dig i Lua Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Lua Academy?

Der kræves ingen tidligere erfaring. Lua Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “EVAL og Redis' Lua-miljø”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Lua Academy-lektion?

Ja. Alle Lua Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. EVAL og Redis' Lua-miljø
  2. Atomare operationer og transaktioner
  3. Ratebegrænsning med Lua
  4. SCRIPT LOAD og EVALSHA
← Tilbage til Lua Academy