redis
Lua-Scripting
Suche…
Einführung
Redis bietet eine Reihe von Mechanismen zur Erweiterung der Funktionalität der Datenbank. Ein Mechanismus besteht in der Verwendung serverseitiger LUA-Skripts, die zum Bearbeiten von Daten ausgeführt werden können. Lua-Skripte können nützlich sein, um teure Operationen auszuführen oder atomare Operationen zu implementieren, die Logik erfordern.
Befehle für das Scripting
Redis bietet sieben verschiedene Operationen für die Arbeit mit Skripten:
- Eval-Operationen (EVAL, EVALSHA)
- SCRIPT-Operationen (DEBUG, EXISTS, FLUSH, KILL, LOAD)
Der EVAL-Befehl wertet ein Skript aus, das dem Server als String-Argument bereitgestellt wird. Skripts können auf die angegebenen Redis-Schlüssel als Argumente für den Befehl und auf zusätzliche Zeichenfolgeparameter zugreifen, die der Benutzer an das Skript übergeben möchte.
Zum Beispiel der Befehl:
EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
bewirkt die Ausführung eines benutzerdefinierten Lua-Skripts, das einfach die angegebenen Werte zurückgibt. Bei dem Anruf handelt es sich um 2 Redis-Tasten (Taste1 und Taste2) und zwei Parameter.
Eine andere Möglichkeit, ein Lua-Skript auszuführen, besteht darin, es zuerst in die Datenbank zu laden und es dann mit einem SHA-Hash des Skripts auszuführen:
> script load "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"
"a42059b356c875f0717db19a51f6aaca9ae659ea"
> evalsha "a42059b356c875f0717db19a51f6aaca9ae659ea" 2 key1 key2 foo bar
1) "key1"
2) "key2"
3) "foo"
4) "bar"
Der Befehl zum Laden des Skripts lädt das Skript und speichert es in der Datenbank. Eine Sha-Signatur des Skripts wird zurückgegeben, damit von zukünftigen Aufrufen darauf verwiesen werden kann. Die EVALSHA-Funktion übernimmt das sha und führt das entsprechende Skript aus der Datenbank aus.