Redis的指令碼

翔之天空發表於2016-10-31


Redis 指令碼使用 Lua 直譯器來執行指令碼。Reids 2.6 版本通過內嵌支援 Lua 環境。執行指令碼的常用命令為EVAL

 

redis Eval 命令基本語法如下:

redis 127.0.0.1:6379> EVAL scriptnumkeys key [key ...] arg [arg ...]

引數說明:

script: 引數是一段 Lua 5.1 指令碼程式。指令碼不必(也不應該)定義為一個 Lua 函式。

numkeys: 用於指定鍵名引數的個數。

key [key ...]: 從 EVAL 的第三個引數開始算起,表示在指令碼中所用到的那些 Redis 鍵(key),這些鍵名引數可以在 Lua 中通過全域性變數 KEYS 陣列,用 1 為基址的形式訪問( KEYS[1] , KEYS[2] ,以此類推)。

arg [arg ...]: 附加引數,在 Lua 中通過全域性變數 ARGV 陣列訪問,訪問的形式和KEYS 變數類似( ARGV[1] 、 ARGV[2] ,諸如此類)。

 

 

演示如下:

127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"


Redis指令碼命令

EVAL script numkeys key [key ...] arg [arg...] 執行 Lua 指令碼。

EVALSHA sha1 numkeys key [key ...] arg [arg...] 執行 Lua 指令碼。

SCRIPT EXISTS script [script ...] 檢視指定的指令碼是否已經被儲存在快取當中。

SCRIPT FLUSH 從指令碼快取中移除所有指令碼。

SCRIPT KILL 殺死當前正在執行的 Lua 指令碼。

SCRIPT LOAD script 將指令碼 script 新增到指令碼快取中,但並不立即執行這個指令碼。

相關文章