Lua Academy · Lektion

EVAL och Redis Lua-miljön

Kör Lua-skript med EVAL, förstå KEYS/ARGV och cachning av skript.

Lektion 1 av 413 steg

EVAL och Redis Lua-miljön är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.

Varför Lua i Redis?

Redis gör det möjligt att köra Lua-skript på servern med EVAL. Skripten körs atomiskt – inga andra Redis-kommandon körs samtidigt, vilket möjliggör säkra operationer i flera steg.

EVAL-kommandot

EVAL script numkeys key [key ...] arg [arg ...] – skriptet kommer åt nycklar via tabellen KEYS och argument via tabellen ARGV (indexerade från 1).

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

Åtkomst till KEYS och ARGV

I Lua är KEYS och ARGV globala tabeller som fylls i av 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 jämfört med redis.pcall

redis.call(cmd, ...) kör ett Redis-kommando och utlöser ett Lua-fel om kommandot misslyckas. redis.pcall returnerar en feltabell i stället för att utlösa ett fel.

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

Returvärden

Lua-typer konverteras till Redis-svarstyper: tal → heltal, strängar → bulksträngar, tabeller → multibulk-arrayer, false/nil → nil-svar, true → heltalet 1.

Skriptcachelagring

Redis cachar kompilerade skript med hjälp av SHA1. Det första EVAL-anropet kompilerar och cachar skriptet. Efterföljande anrop med samma SHA-värde (via EVALSHA) hoppar över kompileringen.

Åtkomst till Redis-datatyper

Alla standardkommandon i Redis är tillgängliga via redis.call: GET, SET, HGET, LPUSH, EXPIRE med flera.

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

Atomicitetsgaranti

Medan ett Lua-skript körs blockerar Redis alla andra klienter. Skript bör vara snabba (från mikrosekunder till millisekunder). Långkörande skript blockerar hela servern.

Lua-version i Redis

Redis bäddar in Lua 5.1 (eller en kompatibel version av 5.1). Vissa funktioner, som goto och bit32, kan skilja sig åt. Använd biblioteken cjson och cmsgpack som tillhandahålls av Redis för JSON och MessagePack.

Bästa praxis för felhantering

Använd redis.pcall för operationer som kan misslyckas, till exempel på grund av typfel. Returnera strukturerade feltabeller som klienten kan tolka.

Felsökning av Redis-skript

Använd redis.log(redis.LOG_DEBUG, "message") för att skriva felsökningsmeddelanden till Redis-loggen. Testa skript i redis-cli med EVAL innan SCRIPT LOAD.

Fråga om Redis Lua

Vilken är den främsta fördelen med att köra Lua-skript i Redis med EVAL?

Sammanfattning: EVAL och Redis Lua-miljön

EVAL kör Lua-skript atomiskt i Redis. Kom åt nycklar via KEYS[n] och argument via ARGV[n]. Använd redis.call för kommandon. Skript cachas med SHA1. Håll skripten snabba för att undvika att servern blockeras.

Gratis att börja

Lär dig Lua med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
40
Lektioner
159

Vanliga frågor

Är lektionen ”EVAL och Redis Lua-miljön” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”EVAL och Redis Lua-miljön”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”EVAL och Redis Lua-miljön”?

Kör Lua-skript med EVAL, förstå KEYS/ARGV och cachning av skript. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lua Academy?

Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”EVAL och Redis Lua-miljön”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lua Academy-lektionen?

Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. EVAL och Redis Lua-miljön
  2. Atomära operationer och transaktioner
  3. Hastighetsbegränsning med Lua
  4. SCRIPT LOAD och EVALSHA
← Tillbaka till Lua Academy