AOF 机制
AOF 机制
3.1 执行原理
开启
3.2 同步策略
appendfsync
控制:
可选配置 | 说明 |
---|---|
always | 命令写入 |
everysec | 命令写入 |
no | 命令写入 |
write 操作会触发延迟写机制,Linux 在内核提供页缓冲区用来提高硬盘的IO 性能,write 操作在写入系统缓冲区后直接返回。同步操作依赖于系统调度机制,例如缓冲区页空间写满或达到特定时间周期。 同步文件之前,如果此时系统故障宕机,缓冲区内数据将丢失。fsync 针对单个文件操作,做强制硬盘同步,fsync 操作将阻塞直到写入硬盘完成后返回,它保证了数据持久化的安全。
everysec
,此时能够兼顾性能和保证数据安全,在发生意外宕机的时,最多会丢失一秒的数据。
3.3 相关配置
想要使用appendonly
的值为 yes
,默认值为 no
。默认appendonly.aof
appendfilename
的值进行修改,和
四、对比分析
4.1 优点与缺点
RDB 的优点
RDB 使用一次性生成内存快照的方式, 产生的文件紧凑压缩比更高, 适用于备份和全量复制等场景。RDB 文件通常比同一数据集的等效AOF 文件小,所以使用RDB 恢复数据远远快于AOF 方式。RDB 最大限度地提高了Redis 的性能,因为Redis 父进程只需要fork 出一个子进程,它本生并不会执行磁盘I/O 等操作。
RDB 的缺点
RDB 方式没办法做到数据的实时持久化,假设每次持久化的时间间隔是5 分钟,当在上一次持久化后3 分钟后发生了服务宕机,则这三分钟内的数据会全部丢失。fork 操作是一个重量级的操作,如果数据集很大,Fork 操作可能会非常耗时。
AOF 的优点
AOF 能够实现实时或秒级的持久化操作,能够保证数据的最少丢失。- 如果突然宕机,日志以半写命令结束,可以使用
redis-check-aof 工具进行修复,从而保证数据最少丢失。
AOF 的缺点
AOF 文件通常比同一数据集等效的RDB 文件大。- 根据选择的同步策略的不同,
AOF 可能比RDB 还慢。
4.2 使用建议
按照