Redis故障紧急排查指南,分享服务恢复与预防策略

文章导读
紧急排查步骤:1. 检查进程是否存活:ps -ef | grep redis;2. 查看日志:tail -f /var/log/redis/redis.log;3. 检查内存使用:free -h 和 redis-cli info memory;4. 测试连通性:redis-cli ping;5. 重启服务:systemctl restart redis;预防:开启AOF持久化,设置maxmemor
📋 目录
  1. Redis宕机排查
  2. 主从复制故障恢复
  3. 大key导致卡顿
  4. 持久化故障
  5. 连接数爆满
  6. 集群故障处理
A A

紧急排查步骤:1. 检查进程是否存活:ps -ef | grep redis;2. 查看日志:tail -f /var/log/redis/redis.log;3. 检查内存使用:free -h 和 redis-cli info memory;4. 测试连通性:redis-cli ping;5. 重启服务:systemctl restart redis;预防:开启AOF持久化,设置maxmemory,监控告警。

Redis宕机排查

Redis 服务无法启动,查看日志发现 bind 127.0.0.1 导致远程无法访问,修改为 0.0.0.0 并重启解决。内存不足时,配置 maxmemory-policy allkeys-lru 自动淘汰键值。

主从复制故障恢复

从库报错:MASTER_DOWN_Link,检查网络连通,从库执行 SLAVEOF no one 断开,然后 SLAVEOF ip port 重新复制。预防:使用 sentinel 实现高可用自动切换。

Redis故障紧急排查指南,分享服务恢复与预防策略

大key导致卡顿

使用 redis-cli --bigkeys 找出大key,手动删除或拆分。恢复:重启后设置 hash-max-ziplist-entries 限制大hash。监控脚本:redis-cli --stat 观察命令耗时。

持久化故障

RDB快照失败,检查磁盘空间 df -h,清理后手动 bgsave。AOF文件过大:bgrewriteaof 压缩。预防:appendfsync everysec,no-appendfsync-on-rewrite yes。

连接数爆满

redis-cli info clients 查看连接数,超过 maxclients 时拒绝新连接。解决:kill 僵尸连接,调大 maxclients 或用连接池。预防:设置 timeout 自动关闭空闲连接。

Redis故障紧急排查指南,分享服务恢复与预防策略

集群故障处理

节点下线:redis-cli --cluster check,修复槽位:redis-cli --cluster rebalance。恢复:添加节点 cluster meet。预防:奇数主节点,开启 cluster-require-full-coverage no。

FAQ
Q: Redis突然无法连接怎么快速恢复?
A: 先 ping 测试,进程没了就重启,日志看端口占用 kill 掉占用进程。
Q: 怎么防止内存溢出?
A: 配置 maxmemory 和 eviction 策略,定期监控 used_memory。
Q: 主从同步延迟大怎么办?
A: 检查 repl_backlog_size,网络带宽,优化 offset 同步。
Q: 服务重启数据丢失?
A: 开启 AOF + RDB 混合持久化,确保 fsync 策略合适。