将脚本加载到缓存中,并生成sha值
SCRIPT LOAD script
将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。
EVAL 命令也会将脚本添加到脚本缓存中,但是它会立即对输入的脚本进行求值。
如果给定的脚本已经在缓存里面了,那么不做动作。
在脚本被加入到缓存之后,通过 EVALSHA 命令,可以使用脚本的 SHA1 校验和来调用这个脚本。
脚本可以在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。
返回值:
给定 script 的 SHA1 校验和
local_redis:0>SCRIPT LOAD "return 'hello moto'"
"232fd51614574cf0867b83d384a5e898cfd24e5a"
通过sha值加载脚本
EVALSHA sha1 numkeys key [key …] arg [arg …]
根据给定的 sha1 校验码,对缓存在服务器中的脚本进行求值。
将脚本缓存到服务器的操作可以通过 SCRIPT LOAD 命令进行。
这个命令的其他地方,比如参数的传入方式,都和 EVAL 命令一样。
local_redis:0>SCRIPT LOAD "return 'hello moto'"
"232fd51614574cf0867b83d384a5e898cfd24e5a"
local_redis:0>EVALSHA "232fd51614574cf0867b83d384a5e898cfd24e5a" 0
"hello moto"
清除所有脚本缓存
SCRIPT FLUSH
清除所有 Lua 脚本缓存。
local_redis:0>SCRIPT FLUSH
"OK"
判断脚本是否存在缓存中
SCRIPT EXISTS script [script …]
给定一个或多个脚本的 SHA1 校验和,返回一个包含 0 和 1 的列表,表示校验和所指定的脚本是否已经被保存在缓存当中。
关于使用 Redis 对 Lua 脚本进行求值的更多信息,请参见 EVAL 命令。
返回值:
一个列表,包含 0 和 1 ,前者表示脚本不存在于缓存,后者表示脚本已经在缓存里面了。
列表中的元素和给定的 SHA1 校验和保持对应关系,比如列表的第三个元素的值就表示第三个 SHA1 校验和所指定的脚本在缓存中的状态。
local_redis:0>SCRIPT LOAD "return 'hello moto'"
"232fd51614574cf0867b83d384a5e898cfd24e5a"
local_redis:0>SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
1