redis~lua脚本的使用
通过lua脚本来运行redis命令主要体现在批量执行和跨语言方面,我们可以通过redis.call()函数来执行lua脚本,下面介绍几个lua里的参数
eval lua-script key-num [key1 key2 key3 ....] [value1 value2 value3 ....]
- eval代表执行Lua语言的命令。
- lua-script代表Lua语言脚本。
- key-num表示参数中有多少个key,需要注意的是Redis中key是从1开始的,如果没有key的参数,那么写0。
- [key1 key2 key3…]是key作为参数传递给Lua语言,也可以不填,但是需要和key-num的个数对应起来。
- [value1 value2 value3 …]这些参数传递给Lua语言,他们是可填可不填的。
实例
在redis里添加一个foo,值是lind
eval "return redis.call('set',KEYS[1],ARGV[1])" 1 foo value
下面这个实例是实现分布锁的lua脚本
local lockClientId = redis.call('GET', KEYS[1])\n" +
"if lockClientId == ARGV[1] then\n" +
" redis.call('PEXPIRE', KEYS[1], ARGV[2])\n" +
" return true\n" +
"elseif not lockClientId then\n" +
" redis.call('SET', KEYS[1], ARGV[1], 'PX', ARGV[2])\n" +
" return true\n" +
"end\n" +
"return false"
这个脚本与开发语言没有关系。
分类:
redis
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2019-08-20 elasticSearch的部署和使用
2019-08-20 jvm原理和代码运行的过程
2018-08-20 我的那些年(8)~去朋友公司做网站开发
2018-08-20 我的那些年(7)~第一份互联网工作