Redis重启数据全丢?RDB和AOF持久化怎么选,别拍脑袋

来源:互联网 时间:2026-08-30

 

Redis快是真快,代价是数据在内存里,进程一崩、机器一断电,没落盘的数据就没了。站长场景里最疼的两种:一是拿Redis存Session,重启一次全员掉线重登;二是拿它存计数器和队列,重启后数字归零、任务丢失。持久化配置平时没人看,出事才知道疼。

Redis给两种持久化方案。RDB是定时快照,每隔一段时间把内存数据整个dump成一份rdb文件,文件小、恢复快,但两次快照之间的数据会丢。AOF是追加日志,每条写命令都记下来,最多丢一秒。

# redis.conf 关键配置
# RDB:900秒内至少1次修改 / 300秒内10次 / 60秒内1万次,触发快照
save 900 1
save 300 10
save 60 10000

# AOF:开启并设置每秒刷盘
appendonly yes
appendfsync everysec # 每秒fsync,性能和安全平衡点

# AOF重写:文件膨胀到原值2倍时自动压缩
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

选型其实不复杂:存Session、缓存这类丢了能重建的数据,光开RDB就够,重启后大不了用户重登,恢复速度快才是重点。存队列、计数器这类丢了就是真丢了的数据,必须开AOF,everysec这个档位最多丢一秒数据,性能损耗也扛得住。

AOF有个常见坑:文件只增不减,跑几个月几个G很正常,因为一条key改一百次就记一百条。AOF重写就是解决这个的,Redis会根据当前内存数据反推一份最小命令集重写文件。手动触发用BGREWRITEAOF命令,建议放在凌晨低峰定时执行。

验证方法:改完配置重启Redis,写入几条数据,然后kill掉再启动,用GET看数据还在不在。AOF模式下注意看启动日志有没有“DB loaded from append only file”这行,有它说明恢复走的AOF。再做一次BGREWRITEAOF,观察AOF文件从几G缩回几十M。

最后提醒一句,RDB和AOF可以同时开,4.0以后Redis用混合持久化,重写时RDB格式打底加AOF增量,恢复又快丢得又少。备份别只依赖Redis自己的持久化,每天凌晨把rdb文件和aof文件各拷一份到别的机器,才是真正睡得着觉的方案。

数据来源:Redis官方文档

相关文章

标签:

A5创业网 版权所有

返回顶部