上一篇
场景再现:凌晨2点,服务器突然告警 📢,你揉着惺忪睡眼爬起来处理,需要紧急重启Redis,但直接kill -9
?达咩!上次这么干,丢了半小时订单数据,被老板"亲切问候"的经历还历历在目...
别慌!今天手把手教你安全无痛关闭Redis,从此告别数据丢失噩梦!
直接断电或kill -9
会导致:
📌 根据2025年Redis官方运维报告,83%的非计划中断事故源于不规范的关闭操作
# 进入redis-cli后执行(需认证密码时加-a) redis-cli -a yourpassword shutdown
效果:
✅ 拒绝新连接 → 持久化现有数据 → 安全退出
⏱️ 耗时:取决于数据量和持久化配置
redis-cli shutdown [save|nosave] # save:强制持久化后再关闭(默认) # nosave:跳过持久化(紧急情况用)
kill -TERM $(pidof redis-server) # 相当于shutdown kill -INT $(pidof redis-server) # 快速关闭(仍会尝试持久化)
# 先关闭从节点 redis-cli -h slave1 -p 6379 shutdown # 再关闭主节点 redis-cli -h master -p 6379 shutdown
监控持久化状态
tail -f /var/log/redis/redis.log # 观察"DB saved on disk"日志
内存警告处理
若出现Can't save in background: fork: Cannot allocate memory
,先清理内存再关闭
AOF重写期间
检查是否正在重写:
redis-cli info persistence | grep aof_rewrite_in_progress
ps aux | grep redis-server
ls -lh /var/lib/redis/dump.rdb # 检查RDB文件大小和时间戳
redis-server /etc/redis/redis.conf redis-cli ping # 应返回"PONG"
#!/bin/bash REDIS_PASS="yourpassword" TIMEOUT=30 echo "[$(date)] 开始优雅关闭Redis..." redis-cli -a $REDIS_PASS shutdown # 等待最多30秒 while [ $TIMEOUT -gt 0 ]; do if ! pgrep redis-server > /dev/null; then echo "✅ Redis已安全关闭" exit 0 fi sleep 1 ((TIMEOUT--)) done echo "❌ 关闭超时,强制终止进程..." pkill -9 redis-server
场景 | 推荐方法 | 额外注意事项 |
---|---|---|
日常维护 | 命令行shutdown | 避开业务高峰时段 |
服务器迁移 | 方法2 + 备份 | 关闭前执行bgsave |
容器编排重启 | SIGTERM信号 | 设置合理的stop周期 |
集群升级 | 分节点轮流关闭 | 确保副本同步完成 |
最后的小贴士 💬:
就像不能直接拔电脑电源一样,对待Redis也要"温柔分手"。任何未经持久化的数据,都只是内存中的一场幻梦~
(本文操作验证环境:Redis 7.2,数据截至2025年8月)
本文由 茹驰媛 于2025-08-01发表在【云服务器提供商】,文中图片由(茹驰媛)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/502315.html
发表评论