执行脚本1


脚本使用Lua解释器来执行脚本,常用命令为eval
(1)eval script numkeys key1 key2 arg1 arg2
--eval 命令将脚本script添加到脚本缓存中,但是会立即执行
--KEYS,ARGV必须大写
--'set' 'ok' 必须是单引号
--script可以是lua脚本,也可以是脚本地址
--redis.call()可以调用redis命令,redis.pcall()也可以
--{}在lua里是指数据类型table,类似数组。

eval "redis.call('set',KEYS[1],ARGV[1]);redis.call('set',KEYS[2],ARGV[2]);return 'ok';" 2 name age qiao 18
eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 name age qiao 18


(2)evalsha sha1 numkeys key1 key2 arg1 arg2
--script load :将脚本script添加到脚本缓存中,并不立即执行该脚本,如果给定的脚本已经在缓存中存在了,那不执行任何操作
--evalsha:根据给定的sha1校验码,执行缓存在redis中的lua脚本
--脚本可以在缓存中保存无限长的时间,知道执行 script flush命令为止

script load "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" --"a42059b356c875f0717db19a51f6aaca9ae659ea"
evalsha a42059b356c875f0717db19a51f6aaca9ae659ea 2 name age qiao 18

(3)script exists sha1
--校验脚本是否已被保存到缓存中
--返回一个列表,包含0和1,0表示没有,反之
script exists a42059b356c875f0717db19a51f6aaca9ae659ea

(4)script flush
--清楚所有脚本缓存
--返回总是ok

(5)script kill
--杀死正在执行的脚本,当且仅当该脚本没有执行任何写操作
--杀死时间过长的脚本,例如进入死循环
--客户端会从eval命令阻塞中退出,返回一个错误

猜你喜欢

转载自www.cnblogs.com/hapyygril/p/12544206.html