把节点从本地记录中抹掉
CLUSTER FORGET node-id 从本地拓扑记录里移除指定节点,并在一段时间内拒绝同 ID 的节点重新加入,防止其他节点的拓扑信息立刻把它带回来。它只影响执行命令的这个节点,不改变目标节点自身的运行状态。所以要让一个节点彻底从集群中消失,需要在集群内逐个节点执行这条命令,这正是它与集群工具删节点命令最本质的区别。
基本信息
| 用法 | CLUSTER FORGET <node-id> |
|---|---|
| 作用范围 | 仅本地节点的拓扑记录 |
| 保护机制 | 短时间内拒绝同 ID 节点重新加入 |
| 执行要求 | 需要在集群内逐个节点执行 |
| 注意 | 目标节点自身进程与数据不受影响 |
典型使用场景
- 某个节点已经被移除但仍残留在部分节点的拓扑列表里
- 误把测试实例并入集群后需要彻底把它清出去
- 节点被重建后 ID 变化,旧的僵尸记录需要手工清理
- 排查「删不干净」的问题,确认哪些节点尚未执行移除
- 更换机器后清理历史节点记录,保持拓扑列表干净
清理示例
清理示例
redis-cli -p 7000 CLUSTER NODES | grep <node-id> # 确认残留记录还在
redis-cli -p 7000 CLUSTER FORGET <node-id> # 在当前节点移除
redis-cli -p 7001 CLUSTER FORGET <node-id> # 其他节点逐个执行
redis-cli -p 7000 CLUSTER NODES | grep <node-id> # 复核记录是否清干净与其他移除方式的区别
| 方式 | 影响范围 | 适用判断 |
|---|---|---|
| 本地移除命令 | 只清当前节点的记录 | 清理僵尸记录、逐台收尾 |
| 集群工具删节点 | 通过管理工具协调完成移除 | 标准缩容流程 |
| 停止进程 | 不影响拓扑记录 | 不能替代移除操作 |
| 删除数据目录 | 只在目标节点本地 | 与拓扑记录无关 |
只在一部分节点执行移除,剩下的节点会通过拓扑交换把该节点重新带回来,表现为「怎么删都删不掉」。
移除是记录层面的操作,目标节点的进程可能仍在运行并持续尝试加入集群,必要时先把它的实例停掉再清理。