*Redis CLUSTER LINKS 命令
CLUSTER LINKS 返回当前节点与集群中所有对等节点(peer nodes)之间的 TCP 连接信息,包括入站连接和出站连接。
*语法
CLUSTER LINKS
*参数说明
无参数。
*返回值
- Array:每个连接为一个数组元素,包含连接的详细属性:
direction:连接方向(to或from)node:对端节点的 IDcreate-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: direction 的 to 和 from 分别代表什么?
A: to 表示当前节点主动发起的出站连接(连接到对端节点);from 表示对端节点发起的入站连接(连接到当前节点)。正常情况下,两个节点之间应同时存在 to 和 from 连接。
Q2: 为什么连接信息中没有 IP 和端口?
A: IP 和端口信息在 CLUSTER NODES 中提供。LINKS 主要关注连接本身的元数据(缓冲区、事件状态等)。通过 node 字段的节点 ID 可以与 NODES 输出关联查询。
Q3: 发送缓冲区过大会有问题吗?
A: 会。如果 send-buffer-used 持续增长且接近 send-buffer-allocated,说明节点无法及时发送消息,可能导致集群通信延迟增加,甚至触发超时和故障检测。需要排查网络带宽或对端节点的处理能力。