EVAL og Redis' Lua-miljø
Kør Lua-scripts med EVAL, forstå KEYS/ARGV, og lær om scriptcaching.
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: mykeyAdgang 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 helloredis.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) endReturvæ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 countAtomisk 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.
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
- EVAL og Redis' Lua-miljø
- Atomare operationer og transaktioner
- Ratebegrænsning med Lua
- SCRIPT LOAD og EVALSHA