3.3 lua脚本相关命令
3.3.1 把lua脚本装载到缓存里
SCRIPT LOAD
语法:
SCRIPT LOAD script
将脚本script添加到脚本缓存中,但并不立即执行这个脚本.该命令返回给定脚本的SHA1校验和
例:
装载脚本:
SCRIPT EXISTS
语法:
SCRIPT EXISTS script [script ...]
功能:校验指定的脚本是否已经被保存在缓存当中.返回值为一个列表,1表示脚本存在,0表示脚本不存在.列表中的元素和给定的SHA1校验和保持对应关系
例:
装载脚本:
根据校验和确认脚本是否存在:
可以看到,由于不存在校验和为abc123
的脚本,因此对于该校验和的返回值为0
3.3.2 通过EVALSHA
命令执行缓存中的脚本
EVALSHA
命令执行缓存中的脚本EVALSHA
语法:
EVALSHA sha1 numkeys key [key ...] arg [arg ...]
.其中:sha1:脚本的sha1校验和
numkeys:参数个数
key:表示在脚本中所用到的那些Redis键(key),这些键名参数可以在Lua中通过全局变量
KEYS
数组,用1为基址的形式访问(KEYS[1]
,KEYS[2]
,以此类推)arg:附加参数,在Lua中通过全局变量
ARGV
数组访问,访问的形式和KEYS变量类似(ARGV[1]
,ARGV[2]
,诸如此类)
功能:根据给定的sha1校验码,执行缓存在服务器中的脚本
例:执行上文加载的return 1 + 2
3.3.3 清空缓存中lua脚本的命令
SCRIPT FLUSH
语法:
SCRIPT FLUSH
功能:清除所有Lua脚本缓存.该命令总是返回OK
确认脚本是否存在:
清空所有脚本:
确认脚本是否存在:
可以看到,脚本已经被清空了
3.3.4 用EVAL
命令执行LUA脚本
EVAL
命令执行LUA脚本EVAL
语法:
EVAL script numkeys key [key ...] arg [arg ...]
.其中:numkeys:参数个数
key:表示在脚本中所用到的那些Redis键(key),这些键名参数可以在Lua中通过全局变量
KEYS
数组,用1为基址的形式访问(KEYS[1]
,KEYS[2]
,以此类推)arg:附加参数,在Lua中通过全局变量
ARGV
数组访问,访问的形式和KEYS变量类似(ARGV[1]
,ARGV[2]
,诸如此类)
功能:直接运行脚本
例:
运行一段LUA脚本,该脚本接收1个Redis键名和1个参数.
SCRIPT KILL
语法:
SCRIPT KILL
功能:杀死当前正在运行的LUA脚本.当且仅当这个脚本没有执行过任何写操作时,这个命令才生效,该命令执行后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从
EVAL
命令的阻塞当中退出,并收到一个错误作为返回值.
例:在没有LUA脚本正在运行时执行SCRIPT KILL
Last updated