*Redis SCRIPT DEBUG 命令
SCRIPT DEBUG 设置 Redis Lua 脚本的调试模式,用于开发和排查脚本问题。
*语法
SCRIPT DEBUG (YES | NO | SYNC)
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| YES | Flag | 是 | 开启异步调试模式 |
| NO | Flag | 是 | 关闭调试模式 |
| SYNC | Flag | 是 | 开启同步调试模式(会阻塞其他客户端) |
*返回值
- OK:设置成功
*时间复杂度
O(1)
*
*示例
*开启异步调试
> SCRIPT DEBUG yes
OK
> EVAL "return redis.call('GET', KEYS[1])" 1 mykey
# 调试信息输出到日志
*开启同步调试
> SCRIPT DEBUG sync
OK
> EVAL "return redis.call('GET', KEYS[1])" 1 mykey
# 调试信息实时输出到客户端
*关闭调试
> SCRIPT DEBUG no
OK
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 未提供调试模式参数 | 必须指定 YES/NO/SYNC |
| ERR Unknown SCRIPT subcommand | 参数拼写错误 | 使用 yes/no/sync |
*最佳实践
- 开发调试:仅在开发和测试环境使用,生产环境严禁开启
- 异步调试优先:YES 模式不会阻塞其他客户端;SYNC 模式仅单人调试使用
- 配合日志:调试信息输出到日志文件,使用
redis-cli --ldb获得交互式调试体验 - 调试完成后务必执行
SCRIPT DEBUG no关闭
*FAQ
Q1: SCRIPT DEBUG 和 Lua 调试器有什么区别?
A: SCRIPT DEBUG 是 Redis 内置的 Lua 调试支持,配合 redis-cli --ldb 可实现断点、单步执行等交互式调试。
Q2: 同步调试模式有什么风险? A: SYNC 模式会阻塞服务器处理其他请求,仅在开发环境单客户端调试时使用,生产环境绝对禁止。
Q3: 调试信息输出到哪里? A: 异步模式输出到 Redis 日志文件;同步模式通过 redis-cli 客户端实时输出。