Redis持久化RDB与AOF:配置、恢复与避坑实操

Redis默认把数据放在内存里,重启服务或服务器后数据会全部丢失。
RDB和AOF是两种把数据保存到磁盘的机制,RDB定期生成数据快照,AOF记录每次写命令。
新手先搞懂区别,再按步骤配置验证,就能避免重启丢数据。

两种持久化机制到底存了什么

RDB(Redis Database)在指定时间间隔内,把当前内存中的数据集快照写入磁盘文件,默认叫dump.rdb。
它恢复速度快,文件体积小,适合做备份和灾难恢复,但两次快照之间如果服务崩溃,这段时间的写入会丢失。

AOF(Append Only File)把每个写操作追加到文件末尾,默认叫appendonly.aof。
它数据安全性更高,可以做到每秒同步甚至每次写命令都同步,但文件体积大,恢复速度比RDB慢。

两种机制可以同时开启,Redis重启时会优先用AOF恢复数据,因为AOF通常记录得更完整。

动手配置前先确认这几项

确认Redis版本和配置文件路径。
大多数Linux发行版通过包管理器安装后,配置文件在/etc/redis/redis.conf。
用源码编译安装的话,通常在安装目录下。
执行以下命令确认:

redis-server --version
ps aux | grep redis-server

找到实际加载的配置文件路径,后续修改才对生效。
如果使用宝塔面板,可以在软件商店的Redis管理界面直接修改配置,路径通常是/www/server/redis/redis.conf。

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

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

RDB持久化怎么配置和验证

打开配置文件,找到save开头的行。
默认配置类似:

save 900 1
save 300 10
save 60 10000

意思是900秒内至少1个键被修改、300秒内至少10个键被修改、60秒内至少10000个键被修改时,触发快照保存。
新手可以保持默认,或者根据数据重要程度调整。

找到dbfilename和dir两项,确认RDB文件存放位置:

dbfilename dump.rdb
dir /var/lib/redis

改完后重启Redis:

systemctl restart redis

验证是否生效,进入Redis命令行手动触发一次保存:

redis-cli
127.0.0.1:6379> BGSAVE

看到Background saving started说明后台保存已启动。
等几秒后检查文件是否生成:

ls -lh /var/lib/redis/dump.rdb

再执行redis-cli INFO persistence,查看rdb_last_bgsave_status:ok表示上次保存成功。

AOF持久化开启步骤与刷盘策略

在配置文件中找到appendonly,改为:

appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

appendfsync有三个可选值:

  • always:每条写命令都同步到磁盘,最安全但性能最差。
  • everysec:每秒同步一次,兼顾性能和安全,推荐生产环境使用。
  • no:由操作系统决定何时同步,性能最好但可能丢较多数据。

重启Redis使配置生效:

systemctl restart redis

验证AOF是否工作,写入一个测试键:

redis-cli SET testkey hello

然后检查AOF文件是否变大:

ls -lh /var/lib/redis/appendonly.aof

执行redis-cli INFO persistence,看到aof_enabled:1和aof_last_write_status:ok说明AOF正常。

数据恢复与常见报错处理

重启Redis后如果数据没回来,先查日志:

tail -n 50 /var/log/redis/redis-server.log

常见情况有三种:

RDB文件损坏:日志提示Short read or OOM loading DB。
可以用redis-check-rdb工具检查:

redis-check-rdb /var/lib/redis/dump.rdb

如果文件损坏且没有备份,数据可能无法完全恢复。
所以定期备份dump.rdb和appendonly.aof很重要。

AOF文件末尾不完整:Redis启动时提示Bad file format reading the append only file。
可以用以下命令修复:

redis-check-aof --fix /var/lib/redis/appendonly.aof

修复会截断不完整的末尾命令,可能丢失最后几条写入。

权限问题:Redis进程用户没有读写dir目录的权限。
用chown redis:redis /var/lib/redis修正,再重启服务。

生产环境选型与避坑建议

如果数据量不大且能接受分钟级丢失,只开RDB够用。
如果对数据安全性要求高,建议同时开启RDB和AOF。
AOF用everysec策略,RDB保留一份定期快照用于备份和快速恢复。

几个容易踩的坑:

  • 改了配置文件但忘记重启Redis,配置不生效。
  • dir目录磁盘空间不足,导致持久化失败但服务不报错,要监控磁盘使用率。
  • 主从架构下,从库默认也会生成RDB和AOF,如果不需要可以关闭从库的AOF以节省资源。
  • 不要手动删除appendonly.aof文件,否则重启后AOF为空,Redis会以空数据启动。

验证持久化是否真正可靠,最直接的方法是:写入几条测试数据,重启Redis服务,再查数据是否还在。

redis-cli SET testkey 12345
systemctl restart redis
redis-cli GET testkey

如果返回12345,说明持久化配置生效。

常见疑问

RDB和AOF能同时用吗?
可以,而且推荐生产环境这样配置。Redis重启时优先加载AOF,因为AOF通常数据更完整。

AOF文件越来越大怎么办?
Redis提供AOF重写机制,执行BGREWRITEAOF命令可以压缩AOF文件。也可以在配置文件中设置auto-aof-rewrite-percentage和auto-aof-rewrite-min-size自动触发。

持久化会影响Redis性能吗?
RDB的BGSAVE会fork子进程,fork瞬间可能造成短暂延迟。AOF的everysec策略性能影响很小。如果对延迟极其敏感,需要评估业务能否接受。

分享到:
上一篇
Redis Cluster 搭建实战:三主三从集群部署与验
下一篇
PostgreSQL主从配置入门:流复制搭建与故障切换验证
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意