2015-04-01 11 views
5

Redis unterstützt Lua Scripting. Mit dem Befehl eval können wir ein lua-Skript in redis ausführen. Wird das lua-Skript kompiliert oder interpretiert, wenn redis ein lua-Skript aufruft?Wird lua von redis interpretiert oder kompiliert?

+3

Was glauben Sie, der Unterschied zwischen diesen beiden wäre in diesem Fall? Welche Frage willst du wirklich stellen? –

Antwort

2

Lua-Skripte, die zur Ausführung an die Lua-Bibliothek gesendet werden, werden vor der Ausführung immer zu Lua VM-Anweisungen kompiliert. Diese Anweisungen werden dann von der Lua VM interpretiert.

+0

Hier http://intro2libsys.info/introduction-to-redis/lua-scripting wird geschrieben, dass redis einen Lua-Interpreter hat. Bedeutet es, dass wenn redis einen Aufruf zum Ausführen eines Lua-Skripts ausführt, es interpretiert und nicht kompiliert wird? – Ridhima

+2

Redis umschließt Ihr Skript in eine Funktion und verwendet ['luaL_loadbuffer'] (http://www.lua.org/manual/5.1/manual.html#luaL_loadbuffer), wie Sie [hier] sehen können (https: // github. com/antirez/redis/blob/902b877/src/scripting.C# L850-L865). – deltheil

+1

Gut zu wissen eigentlich! Und die Kompilierung sollte nur einmal durchgeführt werden, da Sie nur SHA1 für die nächsten Lua-Aufrufe senden. – zenbeni