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()原型