在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Redis 2.6.0 内置的Lua Script支持,可以在Redis的Server端一次运行大量逻辑。
参考:http://www.searchdatabase.com.cn/showcontent_70423.htm redis中执行lua的命令用eval、evalsha、 script load http://redis.readthedocs.org/en/latest/script/index.html Redis 的 EVAL 命令 参数说明如下: script 参数是一段 Lua 5.1 脚本程序,它会被运行在 Redis 服务器上下文中,这段脚本不必(也不应该)定义为一个 Lua 函数。 numkeys 参数用于指定键名参数的个数。 键名参数 key [key ...] 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。 在命令的最后,那些不是键名参数的附加参数 arg [arg ...] ,可以在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。 上面这几段长长的说明可以用一个简单的例子来概括: > eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second 其中 "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 是被求值的 Lua 脚本,数字 2 指定了键名参数的数量, key1 和 key2 是键名参数,分别使用 KEYS[1] 和 KEYS[2] 访问,而最后的 first 和 second 则是附加参数,可以通过 ARGV[1] 和 ARGV[2] 访问它们。 参考:http://redis.readthedocs.org/en/latest/script/eval.html SCRIPT LOAD script将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。 EVAL 命令也会将脚本添加到脚本缓存中,但是它会立即对输入的脚本进行求值。 如果给定的脚本已经在缓存里面了,那么不做动作。 在脚本被加入到缓存之后,通过 EVALSHA 命令,可以使用脚本的 SHA1 校验和来调用这个脚本。 脚本可以在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。 redis> SCRIPT LOAD "return 'hello moto'" "232fd51614574cf0867b83d384a5e898cfd24e5a" redis> EVALSHA 232fd51614574cf0867b83d384a5e898cfd24e5a 0 "hello moto"
EVALSHA sha1 numkeys key [key ...] arg [arg ...]根据给定的 sha1 校验码,对缓存在服务器中的脚本进行求值。 将脚本缓存到服务器的操作可以通过 SCRIPT LOAD 命令进行。 这个命令的其他地方,比如参数的传入方式,都和 EVAL 命令一样。 |
请发表评论