*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 时不能重定向到自身。