*Redis CLUSTER SAVECONFIG 命令
CLUSTER SAVECONFIG 强制将当前集群的配置状态保存到磁盘上的 nodes.conf 文件中。
*语法
CLUSTER SAVECONFIG
*参数说明
无参数。
*返回值
- OK:保存成功。
*时间复杂度
O(1)
*
*示例
*手动保存集群配置
> CLUSTER SAVECONFIG
OK
*在集群变更后保存
> CLUSTER MEET 192.168.1.20 6379
OK
> CLUSTER SAVECONFIG
OK
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR This instance has cluster support disabled | 未启用集群模式 | 在 redis.conf 中设置 cluster-enabled yes |
| ERR Unable to save cluster config | 磁盘空间不足或文件权限不足 | 检查磁盘空间和 dir 配置项对应目录的权限 |
*最佳实践
- Redis Cluster 在集群拓扑发生变化时(如节点加入、槽迁移、故障转移)会自动保存配置,通常无需手动调用此命令
- 手动调用的场景:修改了集群配置后希望立即持久化,或在调试时需要确认当前配置已写入文件
- 配置文件默认位于
dir配置项指定的目录下,文件名由cluster-config-file配置项指定(默认nodes.conf) - 生产环境不建议频繁手动调用,Redis 已实现了自动保存机制,过度手动调用可能增加不必要的磁盘 I/O
*FAQ
Q1: 配置保存的频率是怎样的? A: Redis 在以下情况自动保存集群配置:节点加入或离开、槽分配变化、故障转移完成。自动保存是异步的,但延迟通常很小。
Q2: 删除 nodes.conf 会有什么后果?
A: 节点重启后会丢失集群拓扑信息,无法正确加入集群。若文件丢失,需要手动重建(通过 CLUSTER MEET 重新加入集群),可能导致数据不可访问。务必做好 nodes.conf 的备份。
Q3: 和 CONFIG REWRITE 有什么区别?
A: CONFIG REWRITE 重写 redis.conf 文件中的配置参数;CLUSTER SAVECONFIG 保存的是 nodes.conf 文件,存储集群节点拓扑和槽分配信息。两者保存的内容和用途完全不同。