*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 客户端实时输出。