redis脚本命令

redis内置了Lua 5.1引擎. 可以很方便的执行lua脚本.
有了这个利器, 我们就可以在redis命令的基础上自己组合命令并原子性执行了.

eval命令执行lua脚本

如果要调用

1
2
EVAL script numkeys [key [key ...]] [arg [arg ...]]

  • script lua脚本, 字符串
  • numkeys 后置keys的数量. 0表示没有参数
  • key 的参数. 可以在lua脚本里通过 “KEYS[index]”来指定key. 会在脚本执行前替换
  • arg 参数. 和keys类似. keys数量之后的参数都是args. 可以用ARGV[index]指定.

demo

1
2
3
4
5
6
7
# 执行一段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方法了

1
2
redis.call(command [,arg...])

  • command redis命令
  • args redis命令所需参数

demo

1
2
3
4
5
# 执行lua脚本, 设置key=a , v = 1
redis> eval "redis.call('set','a',1)" 0

# 验证
redis> get a # 结果 1

不定期更新中…

参考

redis lua


redis脚本命令
https://www.hancher.top/2022/09/29/db-redis-cmd-script/
作者
寒澈
发布于
2022年9月29日
许可协议