redis2.6新特性之eval命令
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"
-
"first"
-
"second" 注:正如你所看到的Lua阵列返回Redis的多散答复,这是一个Redis的返回类型,您的客户端库可能会在你的编程语言转换成一个数组类型。 尽量使用调用lua脚本中的两个redis命令的函数:
redis.call() redis.pcall()