2025年6月26日15:46:26
官方lua脚本文档
https://redis.io/docs/latest/develop/programmability/eval-intro/
https://redis.io/docs/latest/develop/programmability/lua-api/
windows的redis发行版
https://github.com/MicrosoftArchive/redis/releases
windows下也推荐docker版本
https://redis.io/docs/latest/operate/oss_and_stack/install/install-stack/windows/
注意:widnows下的redis下是没有debug的,是因为自3.2.100之后,就没有发布windows版本,只有docker版本
linux 帮助文件同步模式(阻塞整个 Redis 服务,慎用) 某些特殊场景
- redis-cli --ldb-sync-mode --eval your_script.lua key1 key2 , arg1 arg2
复制代码 启动调试(非阻塞模式,不影响生产环境)
- redis-cli --ldb --eval your_script.lua key1 key2 , arg1 arg2
- # redis-cli --ldb --eval 1.lua
- Lua debugging session started, please use:
- quit -- End the session.
- restart -- Restart the script in debug mode again.
- help -- Show Lua script debugging commands.
- * Stopped at 1, stop reason = step over
- -> 1 local zKey = 'bt:order:xxxx';
- lua debugger> help
- Redis Lua 调试器帮助:
- [h] help 显示此帮助信息。
- [s] step 执行当前行并再次暂停。
- [n] next step 的别名。
- [c] continue 运行到下一个断点。
- [l] list 列出当前行附近的源代码。
- [l] list [line] 列出 [line] 附近的源代码。
- line = 0 表示:当前位置。
- [l] list [line] [ctx] 在此形式中,[ctx] 指定显示 [line] 前后的行数。
- [w] whole 列出所有源代码。相当于 'list 1 1000000' 的别名。
- [p] print 显示所有局部变量。
- [p] print <var> 显示指定变量的值。
- 也可以显示全局变量 KEYS 和 ARGV。
- [b] break 显示所有断点。
- [b] break <line> 在指定行添加断点。
- [b] break -<line> 从指定行移除断点。
- [b] break 0 移除所有断点。
- [t] trace 显示调用栈追踪。
- [e] eval 执行一些 Lua 代码(在不同的调用帧中)。
- [r] redis <cmd> 执行一条 Redis 命令。
- [m] maxlen [len] 将记录的 Redis 回复和 Lua 变量 dump 截断到 len 长度。
- 指定 <len> 为 0 表示无限制。
- [a] bort 停止脚本执行。在同步模式下,数据集的更改将被保留。
- 可从 Lua 脚本中调用的调试器函数:
- redis.debug () 在调试器控制台中生成日志。
- redis.breakpoint () 停止执行,就像下一行代码有一个断点一样。
- lua debugger>
- 使用举例
复制代码 [code]/** 注意:这里所有的参数带到lua里面的时候,都会带 REDIS_PREFIX的前缀,这里的lua脚本不好debug,没事不要随便改 5 代表 参数数量*/$res = Redis::eval($script, 5, $zKey, $hKeyPrefix, $start, $end, $delScore);$script = |