redis2.6新特性之eval命令redis
eval原型 EVAL script numkeys key [key ...] arg [arg ...]編程
Available since 2.6.0.數組
時間複雜度:取決於執行的腳本。服務器
EVAL和EVALSHA的都是Redis從2.6.0版開始使用Lua解釋的腳本。EVAL的第一個參數是一個Lua5.1腳本。該腳本並不須要定義一個Lua函數(也不該該)。這僅僅是一個Lua程序,將運行在Redis的服務器的背景下。eval函數的第二個參數是參數的個數以下腳本(從第三個參數)表明Redis的鍵名。此參數可被訪問Lua中使用的按鍵一個基於陣列的形式(所以KEYS[1]鍵[2],...)中的全局變量。 全部的額外的參數不該該表明的鍵名,並使用ARGV全局變量,能夠訪問Lua中,發生了什麼鍵(ARGV[1],ARGV[2],...)很是類似。 上面說什麼,下面的例子應該澄清:編程語言
<!-- lang: lua --> > eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
"key1"函數
"key2"lua
"first"code
"second" 注:正如你所看到的Lua陣列返回Redis的多散答覆,這是一個Redis的返回類型,您的客戶端庫可能會在你的編程語言轉換成一個數組類型。 儘可能使用調用lua腳本中的兩個redis命令的函數:ip
redis.call() redis.pcall()原型