NoSQL|Redis中执行Lua脚本

Redis中执行Lua脚本 语法: 【NoSQL|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()

    推荐阅读