Redis 7.0废弃slaveof改用replicaof,旧配置会导致启动失败;cluster-require-full-coverage默认值由no变为yes;ACL成为强制路径,default用户需显式授权才能执行管理命令。

redis.conf 中被移除或重命名的参数必须手动处理
Redis 7.0 开始正式废弃 slaveof,改用 replicaof;若旧配置里还留着 slaveof,新版 redis-server 启动会直接报错退出,错误信息类似:Invalid argument 'slaveof' in redis.conf。这不是警告,是 fatal error。
其他常见变动包括:
-
notify-keyspace-events的默认值从空字符串变为""(显式空),但行为没变,可不改 -
maxmemory-policy新增noeviction以外的策略如allkeys-lfu,旧版配置若用了新策略名,在旧版里会静默忽略,升级后需确认是否生效 -
cluster-require-full-coverage默认值在 7.0+ 变为yes,而 6.x 是no,若集群容忍部分 slot 不可用,必须显式设为no
配置项语义变更容易被忽略
有些参数名字没变,但含义或取值范围变了。比如 cluster-node-timeout 在 Redis 6 和 7 中单位仍是毫秒,但 7.0+ 对超时判断逻辑更严格——如果网络抖动导致 PING 延迟偶尔超过该值,节点可能被误判为 fail,进而触发不必要的故障转移。
再比如 tcp-backlog:Redis 7 要求系统内核 net.core.somaxconn 至少等于该值,否则启动时仅 warn,但连接拒绝率会上升。检查方式:
sysctl net.core.somaxconn
若输出小于你配置的 tcp-backlog,必须同步调大内核参数。
集群配置文件 nodes-*.conf 不能手动编辑
Redis 启动后自动生成并维护 nodes-7000.conf 这类文件,里面存的是节点 ID、IP、端口、角色、状态等运行时信息。升级时绝对不要用文本编辑器打开修改它——哪怕只是改个 IP 或注释掉一行,都会导致集群握手失败、节点无法加入、CLUSTER NODES 输出异常。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
正确做法是:
- 停掉旧节点前,先执行
redis-cli -p 7000 CLUSTER FORGET <node-id>清理已下线节点(如有) - 升级后首次启动,让新版本自动重建该文件;它会读取
redis.conf中的bind、port、cluster-enabled yes等配置,重新生成合法内容 - 若需迁移节点 IP,应先用
CLUSTER MEET加入新地址,再用CLUSTER FORGET移除旧地址,而非硬改配置文件
ACL 配置在 6→7 升级中需额外校验
Redis 6 引入 ACL,但默认仍允许空密码登录(requirepass 优先级高于 ACL)。到了 Redis 7,ACL 成为强制路径——即使没配 ACL LOAD,只要启用了 requirepass,所有连接都走默认用户 default,且该用户默认无权限执行 CONFIG、CLUSTER 等管理命令。
典型现象:升级后 redis-cli -a pwd CONFIG GET dir 返回 (error) NOPERM this user has no permissions to run the 'config' command。
解决方法只有两个:
- 在
redis.conf中显式提升 default 用户权限:user default on >mypass ~* &@all - 或改用带权限的专用用户,通过
ACL SETUSER创建并持久化到ACLFILE
注意:user default 行必须放在 redis.conf 末尾,否则会被后续 ACL LOAD 覆盖。

















