Redis持久化RDB与AOF两种模式对比选型

Redis 的 RDB 和 AOF 是两种不同的持久化机制,RDB 按时间点生成数据快照,AOF 记录每次写命令。
选型时核心看你能接受多少数据丢失,以及更在意恢复速度还是写入性能。
下面从配置到验证一步步说明,零基础也能跟着做。

先搞清 RDB 和 AOF 到底存了什么

RDB 是把某一刻内存里的所有数据压缩成一个二进制文件,默认叫 dump.rdb。
它的特点是文件小、恢复快,适合做备份和灾难恢复。
缺点是两次快照之间如果 Redis 挂了,这段时间的写入会丢。

AOF 是把每条写命令追加到日志文件末尾,默认叫 appendonly.aof。
Redis 重启时会重新执行这些命令来恢复数据。
它的数据安全性更高,但文件通常比 RDB 大,恢复速度也慢一些。

判断条件:如果业务能容忍几分钟数据丢失,优先用 RDB;
如果几乎不能丢数据,选 AOF 或两者混合。

动手配置:RDB 和 AOF 分别怎么开

假设你已经装好 Redis,配置文件通常位于 /etc/redis/redis.conf 或 /usr/local/redis/redis.conf,下面以这个路径为例。

RDB 配置

RDB 默认就是开启的,检查这几行:

save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/redis

含义是:
900 秒内至少 1 个 key 变化、
300 秒内至少 10 个 key 变化、
60 秒内至少 10000 个 key 变化时,
自动触发快照。dir 是文件保存目录,
确保 Redis 有写权限。

如果不想自动触发,可以注释掉所有 save 行,但这样只能手动执行 BGSAVE。

AOF 配置

AOF 默认关闭,需要手动打开:

appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

appendfsync 有三个可选值:always 每条命令都刷盘,最安全但最慢;everysec 每秒刷一次,兼顾安全和性能;no 交给操作系统决定,最快但可能丢较多数据。
生产环境建议先用 everysec。

改完配置后重启 Redis:

sudo systemctl restart redis

或者用 redis-cli shutdown 再启动。

两种模式同时用可以吗?混合持久化怎么选

从 Redis 4.0 开始支持混合持久化,即 AOF 重写时把当前数据以 RDB 格式写入 AOF 文件开头,后续命令再以 AOF 格式追加。
这样重启时先加载 RDB 部分,再重放少量 AOF 命令,恢复速度更快。

开启方式:

aof-use-rdb-preamble yes

结论:大多数生产环境推荐开启 AOF 并配合 everysec,同时保留 RDB 做冷备。
这样既控制数据丢失窗口,又有快照文件可用于迁移和备份。

避坑指南:这些地方容易出问题

  • 磁盘空间不足:AOF 文件会持续增长,dir 所在分区要留足空间。建议监控磁盘使用率,并设置 auto-aof-rewrite-percentage 和 auto-aof-rewrite-min-size 触发重写。
  • 权限错误:RDB 和 AOF 文件所在目录必须对 Redis 运行用户可写。如果启动报 Permission denied,检查 dir 目录属主。
  • AOF 文件损坏:异常断电可能导致 AOF 尾部不完整。可以用 redis-check-aof --fix appendonly.aof 修复,但修复前先备份原文件。
  • appendfsync always 拖慢性能:除非对数据安全要求极高且写入量很小,否则不要长期用 always。
  • 同时关闭 RDB 和 AOF:这样重启后数据全丢,只适合纯缓存场景。

验证是否生效:三条命令确认

改完配置并重启后,用 redis-cli 连接,执行:

redis-cli info persistence

关注输出中的 rdb_last_bgsave_status:ok 和 aof_last_bgrewrite_status:ok,表示最近一次持久化操作成功。

再手动触发一次保存:

redis-cli bgsave
redis-cli bgrewriteaof

然后到 dir 目录下查看文件是否更新:

ls -lh /var/lib/redis/

应该能看到 dump.rdb 和 appendonly.aof 的时间戳是刚刚。

最后做一次恢复测试:往 Redis 写一个 key,重启服务,再读这个 key,能读到说明持久化配置正确。

常见疑问

RDB 和 AOF 可以同时开启吗?
可以,而且推荐生产环境这样做。Redis 重启时优先用 AOF 恢复,因为 AOF 通常更完整。

AOF 文件越来越大怎么办?
Redis 会自动重写,也可以手动执行 BGREWRITEAOF。重写会生成一个更紧凑的新文件,替换旧文件。

选 RDB 还是 AOF?
如果数据可以容忍几分钟丢失,选 RDB 更省资源;如果数据很重要,选 AOF 并设 everysec;如果既要安全又要快速恢复,开混合持久化。

改了配置没生效?
确认改的是 Redis 实际加载的配置文件,可以用 redis-cli config get appendonly 查看当前运行值。如果和配置文件不一致,说明改错了文件或没重启。

选型没有绝对答案,先明确你的数据丢失容忍度和性能要求,再按上面的步骤配置并验证。
建议在测试环境先演练一次恢复流程,确认无误后再上生产。

分享到:
上一篇
MySQL数据库导入导出大文件,source命令实操
下一篇
Redis密码设置,禁止外网无密码访问
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意