首页/数据/Redis 进阶速查/CLUSTER FORGET 移除节点

CLUSTER FORGET 移除节点

CLUSTER FORGET node-id 从本地拓扑中移除指定节点,并在一分钟内拒绝该节点重新加入(防止 gossip 立刻把它带回来),需要一个一个节点执行。

Redis 进阶速查数据更新于 2026-10-13

把节点从本地记录中抹掉

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>     # 复核记录是否清干净

与其他移除方式的区别

方式影响范围适用判断
本地移除命令只清当前节点的记录清理僵尸记录、逐台收尾
集群工具删节点通过管理工具协调完成移除标准缩容流程
停止进程不影响拓扑记录不能替代移除操作
删除数据目录只在目标节点本地与拓扑记录无关
只在一部分节点执行移除,剩下的节点会通过拓扑交换把该节点重新带回来,表现为「怎么删都删不掉」。
移除是记录层面的操作,目标节点的进程可能仍在运行并持续尝试加入集群,必要时先把它的实例停掉再清理。

易错点

  • 只在一个节点上执行移除,其他节点通过拓扑交换把它复活,问题反复出现
  • 以为移除记录就删掉了节点,实例与数据目录长期残留占用资源
  • 对仍在运行且可通信的节点做移除,它在冷却期后又尝试重新加入,拓扑出现反复震荡
  • 移除后不做复核,残留记录在下一次拓扑查询时才被发现,误判为自动化脚本失效

数据来源与参考

  • Redis 官方文档:CLUSTER FORGET 命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌