ToolkitX
知识库工具箱

持久化机制

RDB、AOF、混合持久化

20min·进阶

01. Redis 怎么把数据存硬盘?

Redis 数据全在内存,断电就没了。它提供两种持久化方式: RDB(快照)——每隔一段时间把整个内存「拍照」存硬盘,像游戏存档。文件小恢复快,但可能丢最后快照之后的数据。 AOF(追加日志)——每条写命令都记下来,像记账本。数据更安全(可做到每秒记一次),但文件比 RDB 大,恢复慢些。

02. RDB 快照——定期拍照

RDB 就是定期拍照——比如每 5 分钟有 100 次修改,生成 dump.rdb。恢复极快,适合备份。但两次快照之间的数据可能丢。
bash
# redis.conf RDB 配置
save 900 1      # 15 分钟有 1 次修改就拍
save 300 10     # 5 分钟有 10 次修改就拍
save 60 10000   # 1 分钟有 1 万次修改就拍

# 手动触发
BGSAVE          # 后台保存,不阻塞(推荐用这个)
LASTSAVE        # 看最后一次快照时间
生产用 BGSAVE,它 fork 子进程做快照,不影响主进程干活。

03. AOF 日志——每笔都记

AOF 像记账——每条写命令追加到文件末尾。Redis 重启时把「账本」从头过一遍,数据恢复。 三种同步策略: always——每条命令立刻写盘,最安全也最慢 everysec——每秒写一次,折中方案,最多丢 1 秒数据(推荐) no——交给操作系统决定,最快但可能丢比较多
bash
# redis.conf AOF 配置
appendonly yes
appendfsync everysec        # 每秒同步(推荐)

# AOF 文件会越来越大,需要重写压缩
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

BGREWRITEAOF               # 手动重写
redis-check-aof --fix appendonly.aof  # 修复损坏的 AOF
AOF 损坏时 Redis 可能拒绝启动,用 redis-check-aof --fix 修复,但可能丢末尾损坏数据。

04. 混合模式——鱼与熊掌兼得

Redis 4.0 起支持混合持久化——AOF 重写时先以 RDB 格式存当前数据,后面跟 AOF 增量日志。加载快(RDB)又安全(AOF)。 生产最佳实践:同时开 RDB 和 AOF,AOF 用 everysec。RDB 做冷备份,AOF 保证数据不丢。
bash
# 混合持久化(Redis 4.0+)
aof-use-rdb-preamble yes

知识测验

1/5正确 0

RDB 持久化的特点?

下一节

哨兵模式

下一节