Redis持久化配置,防止断电丢失缓存数据

Redis默认将数据保存在内存中,一旦服务器断电或进程崩溃,缓存数据就会全部丢失。
通过配置持久化,可以把内存中的数据定期写入磁盘,重启后自动恢复。
下面从零开始,带你完成Redis持久化配置。

先搞清楚RDB和AOF的区别

Redis提供两种持久化方式:

  • RDB(Redis DataBase):在指定时间间隔内生成数据快照,保存为.rdb文件。优点是文件紧凑、恢复快,适合备份;缺点是可能丢失最后一次快照后的数据。
  • AOF(Append Only File):记录每次写操作命令,追加到.aof文件。优点是可以做到秒级数据安全;缺点是文件较大,恢复速度比RDB慢。

生产环境建议同时开启RDB和AOF,既能快速恢复,又能最大限度减少数据丢失。
如果只能选一种,对数据安全性要求高选AOF,对性能要求高选RDB。

准备工作:确认Redis版本和配置文件路径

在开始配置前,先确认两件事:

  1. Redis版本:执行 redis-server --version,建议使用Redis 4.0以上版本,对持久化支持更完善。
  2. 配置文件位置:通常位于 /etc/redis/redis.conf(Linux源码安装)或 /www/server/redis/redis.conf(宝塔面板)。如果不确定,执行 ps aux | grep redis 查看启动参数中的配置文件路径。

修改配置前,先备份原文件

cp /etc/redis/redis.conf /etc/redis/redis.conf.bak

配置RDB快照:让Redis定期保存数据

打开配置文件,找到 SNAPSHOTTING 部分,修改或添加以下内容:

save 900 1      # 900秒内至少1个key变化,触发保存
save 300 10     # 300秒内至少10个key变化,触发保存
save 60 10000   # 60秒内至少10000个key变化,触发保存
dbfilename dump.rdb
dir /var/lib/redis   # RDB和AOF文件的保存目录,确保Redis有写权限

注意事项

  • dir 目录必须存在且Redis进程有写入权限,否则持久化会失败。
  • 如果不需要RDB,可以注释掉所有 save 行,或设置 save ""
  • 修改后重启Redis:systemctl restart redisservice redis restart

配置AOF:实现秒级数据安全

同样在配置文件中,找到 APPEND ONLY MODE 部分:

appendonly yes                  # 开启AOF
appendfilename "appendonly.aof"
appendfsync everysec            # 每秒同步一次,兼顾性能和安全

appendfsync 有三个可选值:

  • always:每条写命令都同步,最安全但性能最差。
  • everysec:每秒同步一次,推荐使用,最多丢失1秒数据。
  • no:由操作系统决定何时同步,性能最好但可能丢失较多数据。

AOF重写:随着时间推移,AOF文件会变大,Redis会自动重写压缩。
可以调整触发条件:

auto-aof-rewrite-percentage 100   # AOF文件比上次重写后增长100%时触发
auto-aof-rewrite-min-size 64mb    # AOF文件至少64MB才触发重写

避坑指南:这些错误不要犯

  • 目录权限问题dir 指定的目录如果Redis没有写权限,日志会报 Permission denied,持久化失败。用 chown redis:redis /var/lib/redis 修复。
  • 同时开启RDB和AOF时的恢复顺序:Redis重启时优先使用AOF文件恢复,因为AOF数据更完整。如果AOF文件损坏,可以先用 redis-check-aof --fix 修复。
  • 不要随意删除持久化文件dump.rdbappendonly.aof 是数据恢复的唯一依据,删除前务必确认已有备份。
  • 内存不足时持久化可能失败:确保服务器有足够内存和磁盘空间,特别是执行RDB快照时,Redis会fork子进程,内存占用可能翻倍。

验证配置是否生效

完成配置并重启Redis后,通过以下方式验证:

  1. 连接Redis:redis-cli
  2. 写入测试数据:set test_key "hello"
  3. 手动触发RDB保存:bgsave,然后检查 dir 目录下是否生成 dump.rdb 文件。
  4. 查看AOF状态:info persistence,关注 aof_enabled:1aof_last_bgrewrite_status:ok
  5. 模拟断电:直接 kill -9 Redis进程,然后重启,检查 test_key 是否还存在。

如果数据恢复成功,说明持久化配置正确。
如果数据丢失,检查日志文件(通常位于 /var/log/redis/redis-server.log)中的错误信息。

常见问题

RDB和AOF可以同时开启吗?
可以,而且推荐同时开启。Redis重启时会优先加载AOF文件,因为AOF记录更完整。

开启AOF后性能下降明显怎么办?
appendfsync 设置为 everysec,这是性能和数据安全的最佳平衡点。如果对性能要求极高,可以设置为 no,但要做好丢失数据的准备。

持久化文件应该保存在哪里?
建议保存在独立的磁盘分区或数据盘,避免与系统盘混用。同时定期备份到远程服务器或对象存储。

如何手动触发持久化?
RDB使用 bgsave 命令,AOF重写使用 bgrewriteaof 命令。两者都不会阻塞Redis主进程。

按照以上步骤配置后,即使服务器意外断电,Redis也能在重启后恢复大部分缓存数据。
建议先在测试环境验证,再应用到生产环境。

分享到:
上一篇
Redis缓存过期策略,适配CMS动态站点
下一篇
Linux系统磁盘分区方案,服务器硬盘划分
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意