Sehen wir uns an, wie es funktioniert.
-
Verbinden Sie sich mit dem Redis-Server über die Redis-Befehlszeilenschnittstelle (redis-cli).
redis-cli
-
Laden wir nun ein Lua-Skript mit SCRIPT LOAD. Wir verwenden dasselbe Skript aus dem vorherigen Schritt, das einen Zähler um einen bestimmten Betrag erhöht.
SCRIPT LOAD "local current = redis.call('INCRBY', KEYS[1], ARGV[1]); return current"
Dieser Befehl lädt das Skript in den Skript-Cache des Redis-Servers und gibt den SHA1-Hash des Skripts zurück. Sie sollten eine ähnliche Ausgabe wie diese sehen:
"6b1e8dd2999cb08546e74339c0c9489f9f89a84b"
Dies ist der SHA1-Hash des Skripts. Notieren Sie sich diesen Hash, da Sie ihn im nächsten Schritt benötigen. Der genaue Hash-Wert kann abweichen.
-
Laden wir nun das Skript, das einen Schlüssel auf einen Wert setzt, wobei sowohl der Schlüssel als auch der Wert als Argumente übergeben werden.
SCRIPT LOAD "redis.call('SET', KEYS[1], ARGV[1]); return ARGV[1]"
Sie sollten eine ähnliche Ausgabe wie diese sehen:
"a8b2b3648969459a8198262a9166e945e890987c"
Notieren Sie sich auch diesen Hash.
-
Laden wir das Skript, das zwei als Argumente übergebene Zeichenketten (Strings) verkettet und das Ergebnis auf einen Schlüssel setzt.
SCRIPT LOAD "local result = ARGV[1] .. ARGV[2]; redis.call('SET', KEYS[1], result); return result"
Sie sollten eine ähnliche Ausgabe wie diese sehen:
"d2a800a974ca96849295220424f9a0664a495345"
Notieren Sie sich auch diesen Hash.
-
Sie können überprüfen, ob die Skripte geladen sind, indem Sie den Befehl SCRIPT EXISTS verwenden. Dieser Befehl nimmt einen oder mehrere SHA1-Hashes als Argumente entgegen und gibt ein Array von 0en und 1en zurück, wobei 1 angibt, dass das Skript mit dem entsprechenden Hash geladen ist, und 0 angibt, dass es nicht geladen ist.
Um beispielsweise zu überprüfen, ob das erste Skript, das wir geladen haben, noch geladen ist, verwenden Sie den folgenden Befehl und ersetzen Sie den Hash durch den, den Sie in Schritt 2 erhalten haben:
SCRIPT EXISTS 6b1e8dd2999cb08546e74339c0c9489f9f89a84b
Ausgabe:
1) (integer) 1
Dies zeigt an, dass das Skript geladen ist.
Wenn Sie versuchen, nach einem Skript zu suchen, das nicht geladen ist:
SCRIPT EXISTS 0000000000000000000000000000000000000000
Ausgabe:
1) (integer) 0
Dies zeigt an, dass das Skript nicht geladen ist.
-
Beenden Sie redis-cli. Dies ist wichtig, damit die Änderungen protokolliert werden.
exit