*Redis CLUSTER LINKS 命令

CLUSTER LINKS 返回当前节点与集群中所有对等节点(peer nodes)之间的 TCP 连接信息,包括入站连接和出站连接。


*语法

CLUSTER LINKS

*参数说明

无参数。


*返回值

  • Array:每个连接为一个数组元素,包含连接的详细属性:
    • direction:连接方向(tofrom
    • node:对端节点的 ID
    • create-time:连接创建时间(毫秒时间戳)
    • events:当前事件状态(如 r 可读,w 可写)
    • send-buffer-allocated:发送缓冲区已分配大小
    • send-buffer-used:发送缓冲区已使用大小
    • link-refcount:引用计数

*时间复杂度

O(N),其中 N 为集群中所有节点的总数。


*示例

*查看集群连接

> CLUSTER LINKS
1) 1) "direction"
   2) "to"
   3) "node"
   4) "3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b"
   5) "create-time"
   6) "1700000000000"
   7) "events"
   8) "rw"
   9) "send-buffer-allocated"
  10) "1024"
  11) "send-buffer-used"
  12) "512"
  13) "link-refcount"
  14) "1"
2) 1) "direction"
   2) "from"
   3) "node"
   4) "67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1"
   5) "create-time"
   6) "1700000005000"
   7) "events"
   8) "r"
   9) "send-buffer-allocated"
  10) "2048"
  11) "send-buffer-used"
  12) "0"
  13) "link-refcount"
  14) "1"

*监控连接方向

> CLUSTER LINKS
1) 1) "direction"
   2) "to"
   ...
2) 1) "direction"
   2) "from"
   ...

*常见错误

错误 原因 解决
ERR This instance has cluster support disabled 未启用集群模式 在 redis.conf 中设置 cluster-enabled yes

*最佳实践

  • 用于排查集群节点间的网络连接问题。若某个节点只有 to 连接而没有 from 连接,可能表明网络单向不通或节点已失联
  • 关注 send-buffer-used 是否持续增长,若接近 send-buffer-allocated 说明节点间消息堆积,可能存在网络延迟或处理瓶颈
  • 生产环境建议将连接状态监控接入告警系统,及时发现网络分区或节点间通信异常
  • 配合 CLUSTER NODES 使用:LINKS 显示连接层信息,NODES 显示逻辑层节点状态

*FAQ

Q1: directiontofrom 分别代表什么? A: to 表示当前节点主动发起的出站连接(连接到对端节点);from 表示对端节点发起的入站连接(连接到当前节点)。正常情况下,两个节点之间应同时存在 tofrom 连接。

Q2: 为什么连接信息中没有 IP 和端口? A: IP 和端口信息在 CLUSTER NODES 中提供。LINKS 主要关注连接本身的元数据(缓冲区、事件状态等)。通过 node 字段的节点 ID 可以与 NODES 输出关联查询。

Q3: 发送缓冲区过大会有问题吗? A: 会。如果 send-buffer-used 持续增长且接近 send-buffer-allocated,说明节点无法及时发送消息,可能导致集群通信延迟增加,甚至触发超时和故障检测。需要排查网络带宽或对端节点的处理能力。