指令碼命令

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 並從資料庫中執行相應的指令碼。