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()
推荐阅读
- #|记SQL Server实战修复死锁总结
- #|疫情让我使用V-rep仿真(结合pythonAPI)实现机器人视觉巡线+pid调速,
- 面试|为什么我们从 Python 切换到 Go
- 零基础学好JAVASE|零基础带你学好JavaSE-抽象类和接口
- SQL|这道 Mysql 的解题思想,值得学习!
- c++|(C++)使用链表编写图书管理系统
- 人工智能|终结 Python 原生字典(这个库要逆天改命了)
- python|终结 Python 原生字典(这个库真的要逆天改命了)
- 人工智能簇|朴素贝叶斯算法之鸢尾花特征分类【机器学习】【伯努利分布,多项式分布,高斯分布】