
通过将 org.redisson.client.handler 包的日志级别设为 TRACE,可实时输出 Redisson 向 Redis 发送的所有底层命令(如 JSON.SET、SET、HGETALL 等),实现类似 Hibernate 的 show_sql 调试效果。
通过将 `org.redisson.client.handler` 包的日志级别设为 `trace`,可实时输出 redisson 向 redis 发送的所有底层命令(如 `json.set`、`set`、`hgetall` 等),实现类似 hibernate 的 `show_sql` 调试效果。
Redisson 本身不提供独立的“命令开关”配置项(如 redisson.config.setShowCommands(true)),但其底层通信由 Netty ChannelHandler 驱动,所有 Redis 指令的编码、发送与响应解析均发生在 org.redisson.client.handler 包下的类中(例如 CommandEncoder、CommandDecoder 和 CommandAsyncService)。因此,启用该包的 TRACE 日志即可完整捕获每一条发出的 Redis 命令。
✅ 配置方式(以 Logback 为例):
在 logback.xml 中添加:
<logger name="org.redisson.client.handler" level="TRACE"></logger>
若使用 Log4j2,则在 log4j2.xml 中配置:
<logger name="org.redisson.client.handler" level="trace" additivity="false"><appenderref ref="Console"></appenderref></logger>
✅ 典型日志输出示例:
启用后,调用如下代码:
RedissonClient redisson = Redisson.create(config);
RJsonBucket<string> bucket = redisson.getJsonBucket("user:1001");
bucket.set("{\"name\":\"Alice\",\"age\":30}", JSONCodec.INSTANCE);</string>
控制台将输出类似内容:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
TRACE o.r.c.h.CommandEncoder - channel: [id: 0xabc123, L:/127.0.0.1:56789 - R:localhost/127.0.0.1:6379]
wrote command: CommandData [command=JSON.SET, params=[user:1001, $, "{\"name\":\"Alice\",\"age\":30}"]]
⚠️ 注意事项:
-
TRACE级别日志量较大,仅建议在开发或调试阶段启用,生产环境请务必关闭; - 日志中显示的是序列化后的原始命令参数(含 JSON 字符串、二进制 key 等),部分特殊字符可能被转义,需结合上下文理解;
- 若使用 Spring Boot,可通过
application.yml快速临时开启:logging: level: org.redisson.client.handler: TRACE
? 进阶提示:
如需进一步过滤或结构化分析命令日志,可配合 MDC(Mapped Diagnostic Context)注入请求 ID 或业务标签,或通过自定义 CommandListener(需继承 CommandAsyncService 并重写 execute 方法)实现更精细的监控逻辑——但这已超出开箱即用范围,推荐优先使用标准日志方案。
总之,org.redisson.client.handler 的 TRACE 日志是观测 Redisson 行为最轻量、最可靠的方式,无需修改代码、不依赖代理、完全兼容所有 Redisson 数据结构操作。










