redis内置了Lua 5.1引擎. 可以很方便的执行lua脚本. 有了这个利器, 我们就可以在redis命令的基础上自己组合命令并原子性执行了.
eval命令执行lua脚本
如果要调用
EVAL script numkeys [key [key ...]] [arg [arg ...]]
- script lua脚本, 字符串
- numkeys 后置keys的数量. 0表示没有参数
- key 的参数. 可以在lua脚本里通过 “KEYS[index]”来指定key. 会在脚本执行前替换
- arg 参数. 和keys类似. keys数量之后的参数都是args. 可以用ARGV[index]指定.
demo
# 执行一段lua脚本, 返回输入的各个参数. 前2个是key, 后面的都是args
redis> EVAL "return { KEYS[1], KEYS[2], ARGV[1], ARGV[2], ARGV[3] }" 2 key1 key2 arg1 arg2 arg3
1) "key1"
2) "key2"
3) "arg1"
4) "arg2"
5) "arg3"
lua脚本
lua脚本调redis指令
最常用的很是就是call方法了
redis.call(command [,arg...])
- command redis命令
- args redis命令所需参数
demo
# 执行lua脚本, 设置key=a , v = 1
redis> eval "redis.call('set','a',1)" 0
# 验证
redis> get a # 结果 1
不定期更新中…
参考
文档信息
- 本文作者:寒澈
- 本文链接:https://www.hancher.top/2022/09/29/redis_cmd_script/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)