*Redis CLIENT GETREDIR 命令
CLIENT GETREDIR 返回当前客户端的重定向客户端 ID(用于客户端缓存的失效消息重定向)。
*语法
CLIENT GETREDIR
*参数说明
无参数。
*返回值
- Integer:重定向目标客户端 ID
-1:未启用客户端缓存重定向0:重定向到当前连接自身(默认)正整数:重定向到指定客户端 ID
*时间复杂度
O(1)
*
*示例
*未启用追踪
> CLIENT GETREDIR
(integer) -1
*启用追踪(默认重定向到自身)
> CLIENT TRACKING ON
OK
> CLIENT GETREDIR
(integer) 0
*重定向到另一个客户端
> CLIENT TRACKING ON REDIRECT 5
OK
> CLIENT GETREDIR
(integer) 5
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 提供了多余参数 | CLIENT GETREDIR 不接受参数 |
*最佳实践
- 主要用于客户端缓存(Client-side Caching)场景
- 使用 RESP3 协议时,无效消息可直接在当前连接接收(重定向为 0)
- 使用 RESP2 协议时,需要通过 REDIRECT 指定另一个连接接收无效消息
- 配合 CLIENT TRACKINGINFO 查看完整的追踪配置
*FAQ
Q1: 什么是客户端缓存重定向? A: 当启用客户端缓存追踪时,Redis 需要通知客户端哪些键已失效。重定向决定了失效消息发送到哪个连接。
Q2: RESP3 和 RESP2 在重向上有什么区别? A: RESP3 支持在同一连接内推送失效消息(重定向为 0);RESP2 必须重定向到另一个 Pub/Sub 连接。
Q3: 重定向客户端 ID 可以是自己吗? A: 使用 RESP3 时,重定向为 0 表示在当前连接接收推送消息。使用 RESP2 时不能重定向到自身。