Redis 脚本

1、EVAL script numkeys key [key...] arg [arg...]

Redis Eval命令使用Lua解释器执行脚本。

参数说明

script:参数是一段Lua5.1脚本程序。脚本不必(也不应该)定义为一个Lua函数。

numkeys:用于指定键名参数的个数。

key[key..]:从EVAL的第三个参数开始算起,表示脚本中所用到的那些redis键(key),这些健名参数可以在Lua中通过全局变量keys数组,用1为基址的形式访问(keys[1],keys[2],以此类推)。

arg [arg...]:附加参数,在Lua中通过全局变量ARGV数组访问,访问的形式和keys变量类似(ARGV[1]、ARGV[2],诸如此类)

redis 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"

2、EVALSHA sha1 numkeys key [key....] arg [arg...]

Redis Evalsha 命令根据给定的 sha1 校验码,执行缓存在服务器中的脚本。

将脚本缓存到服务器的操作可以通过 SCRIPT LOAD 命令进行。

这个命令的其他地方,比如参数的传入方式,都和 EVAL 命令一样。

参数说明:

sha1:通过SCRIPT LOAD生成的sha1校验码。

numkeys:用于指定健名参数的个数。

key [key...]:从EVAL的第三个参数开始算起,表示脚本中使用的那些Redis键(key),这些健名参数可以在Lua中通过全局变量KEYS数组,用1为基址的形式访问(keys[1],key[2],以此类推)

arg [arg...]:附加参数,在Lua中通过全局变量ARGV数组访问,访问的形式和Keys变量类似(ARGV[1]、ARGV[2],诸如此类)

3、SCRIPT EXISTS sha1 [sha1...]

Redis Script Exists 命令用于校验指定的脚本是否已经被保存在缓存当中。

返回一个列表,包含0和1,前者表示脚本不存在于缓存,后者表示脚本已经在缓存里面了。

列表中的元素和给定的SHA1校验和保持对应关系,比如列表的第三个元素的值就表示第三个SHA1校验和所指定的脚本在缓存中的状态。

redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'"    # 载入一个脚本
"232fd51614574cf0867b83d384a5e898cfd24e5a"

redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
1) (integer) 1

redis 127.0.0.1:6379> SCRIPT FLUSH     # 清空缓存
OK

redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
1) (integer) 0

4、SCRIPT LOAD script

Redis Script Load 命令用于将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

EVAL 命令也会将脚本添加到脚本缓存中,但是它会立即对输入的脚本进行求值。

如果给定的脚本已经在缓存里面了,那么不执行任何操作。

在脚本被加入到缓存之后,通过 EVALSHA 命令,可以使用脚本的 SHA1 校验和来调用这个脚本。

脚本可以在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。

关于使用 Redis 对 Lua 脚本进行求值的更多信息,请参见 EVAL 命令。

返回给定脚本的SHA1校验和。

redis 127.0.0.1:6379> SCRIPT LOAD "return 1"
"e0e1f9fabfc9d4800c877a703b823ac0578ff8db"

5、SCRIPT  FLUSH

Redis Script Flush 命令用于清除所有 Lua 脚本缓存。总是返回OK。

redis 127.0.0.1:6379> SCRIPT FLUSH
OK

6、SCRIPT  KILL

Redis Script kill 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。

这个命令主要用于终止运行时间过长的脚本,比如一个因为 BUG 而发生无限循环的脚本。

SCRIPT KILL 执行之后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL 命令的阻塞当中退出,并收到一个错误作为返回值。

总是返回OK。

redis 127.0.0.1:6379> SCRIPT KILL
OK

猜你喜欢

转载自my.oschina.net/u/3767248/blog/1812462
今日推荐