指令碼命令
Redis 提供了七種不同的操作來處理指令碼:
- 評估操作(EVAL, EVALSHA)
- SCRIPT 操作(DEBUG, EXISTS, FLUSH, KILL, LOAD)
EVAL 命令評估作為伺服器的字串引數提供的指令碼。指令碼可以訪問指定為命令引數的指定 Redis 鍵以及使用者要傳遞給指令碼的其他字串引數。
例如,命令:
EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
導致執行使用者定義的 Lua 指令碼,該指令碼只返回提供的值。該呼叫涉及 2 個 Redis 鍵(key1 和 key2)和兩個引數。
執行 Lua 指令碼的另一種方法是首先將其載入到資料庫中,然後使用指令碼的 SHA 雜湊執行它:
> 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"
script load 命令載入指令碼並將其儲存在資料庫中。返回指令碼的 sha 簽名,以便將來的呼叫可以引用它。EVALSHA 函式接受 sha 並從資料庫中執行相應的指令碼。