redis2.6新特性之eval命令

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],…)非常相似。
上面说什么,下面的例子应该澄清:


> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second

1) “key1”
2) “key2”
3) “first”
4) “second”
注:正如你所看到的Lua阵列返回Redis的多散答复,这是一个Redis的返回类型,您的客户端库可能会在你的编程语言转换成一个数组类型。
尽量使用调用lua脚本中的两个redis命令的函数:

redis.call()
redis.pcall()

你可能感兴趣的:(redis2.6新特性之eval命令)