Redis中执行Lua脚本

Redis中执行Lua脚本

语法:

语法: eval script numkeys keys args

参数: eval — redis提供解析lua脚本的命令

script — lua脚本

numkeys — 指定键名参数集(keys)的个数

keys — 键名参数集,通过全局变量KEYS数组表示,起始下标为1

args — 键值参数集,通过全局变量ARGV数组表示,起始下标为1

案例:

# 登录redis后设置一个值
set kojon 10

编写lua脚本

通过key的值乘以一个值

KEYS[1]:参数1,表示key

KEYS[2]:参数2,表示倍数

 local curval =redis.call("get",KEYS[1])
if curval==false then
	curval=0
else
   curval=tonumber(curval)
end 
curval=curval * tonumber(KEYS[2])
redis.call("set",KEYS[1],curval)
return curval

执行

# 语法 redis-cli -a auth --eval lua文件 参数1 参数2
# 没有密码的可以不用-a auth
/usr/local/redis/bin/redis-cli -a KS6IxTDg7Q1gqhnWec9s --eval multiply.lua kojon 2

结果

shell /usr/local/redis/bin/redis-cli -a KS6IxTDg7Q1gqhnWec9s --eval jisuan.lua kojon 2
(integer) 20

描述: EVAL命令的语义要求字面量不要直接写在lua脚本中,推荐使用变量来定义lua脚本,并将字面量放在键名参数集keys和键值参数集args中,通过全局变量KEYS和ARGV来获取,这样做的好处是可缓存!在lua脚本中,可以使用两个函数来执行redis命令,分别是:redis.call()和redis.pcall()

你可能感兴趣的:(NoSQL,#,Redis,Linux&运维,lua,redis,开发语言)