*Redis CLUSTER COUNT-FAILURE-REPORTS 命令
CLUSTER COUNT-FAILURE-REPORTS 返回指定节点当前活跃的故障报告数量。
*语法
CLUSTER COUNT-FAILURE-REPORTS node-id
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| node-id | String | 是 | 目标节点的节点 ID(40 位十六进制字符串) |
*返回值
- Integer:指定节点当前活跃的故障报告数量
*时间复杂度
O(N),其中 N 为该节点当前的故障报告数量。
*示例
*查看某节点的故障报告数
> CLUSTER COUNT-FAILURE-REPORTS 3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b
(integer) 2
*故障报告数为 0 的情况
> CLUSTER COUNT-FAILURE-REPORTS 07c37dfeb235213a872192d90877d0cd55635b91
(integer) 0
*查看当前节点自身的故障报告
> CLUSTER MYID
"3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b"
> CLUSTER COUNT-FAILURE-REPORTS 3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b
(integer) 1
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR Unknown node 3c3a0c... | 提供的 node-id 不存在于集群中 | 通过 CLUSTER NODES 确认正确的节点 ID |
| ERR wrong number of arguments | 未提供 node-id 参数 | 补充目标节点 ID |
| ERR This instance has cluster support disabled | 当前节点未启用集群模式 | 在 redis.conf 中设置 cluster-enabled yes 并重启 |
*最佳实践
- 配合 CLUSTER NODES 使用,确认节点 ID 和节点状态
- 当某个节点处于
fail?状态(疑似故障)时,可用此命令查看其他节点对其的故障报告数,判断故障传播程度 - 故障报告机制是 Redis Cluster 的故障检测核心:每个节点向其他节点发送关于疑似故障节点的故障报告,当报告数达到阈值时,节点被标记为
FAIL - 生产环境建议通过监控脚本定期检查各节点的故障报告数,及时发现网络分区或节点异常
*FAQ
Q1: 什么是故障报告(failure report)?
A: 当节点 A 认为节点 B 疑似故障(PFAIL)时,A 会向其他节点发送关于 B 的故障报告。其他节点收到后会累积这些报告,当达到法定数量(quorum)时,B 被标记为 FAIL。
Q2: 故障报告数量达到多少会触发节点被标记为 FAIL?
A: 取决于该节点的 cluster-node-timeout 配置以及集群的法定数量(quorum)。具体阈值由集群配置决定,通常需要多数主节点的确认。
Q3: 这个命令在单节点或哨兵模式下能用吗?
A: 不能。该命令仅在 Redis Cluster 模式下可用。在 cluster-enabled no 的实例上执行会返回错误。