Appearance
AOF持久化
概述
AOF(Append Only File)记录所有写命令,以日志形式追加保存。
同步策略
| 配置 | 安全性 | 性能 |
|---|---|---|
| always | 每命令同步 | 最慢 |
| everysec | 每秒同步 | 较快 |
| no | 操作系统决定 | 最快 |
redis
appendonly yes
appendfsync everysecrewrite机制
问题
AOF文件随时间增长会很大。
解决
redis
# 自动rewrite
auto-aof-rewrite-percentage 100 # 增长100%触发rewrite
auto-aof-rewrite-min-size 64mb # 最小64MBrewrite流程
1. fork子进程
2. 子进程将数据写成新的AOF
3. 父进程缓存新命令
4. 原子替换旧AOF混合持久化
redis
aof-use-rdb-preamble yes格式
|RDB数据|AOF命令|优点
- 恢复快(RDB部分)
- 数据全(AOF部分)
面试考点
Q: RDB vs AOF?
| 特性 | RDB | AOF |
|---|---|---|
| 文件大小 | 小 | 大 |
| 恢复速度 | 快 | 慢 |
| 数据安全 | 可能有丢失 | 可配置 |
| 性能 | 较好 | always慢 |
Q: AOF文件过大怎么办?
使用bgrewriteaof手动触发rewrite,或配置自动rewrite。
