全称:Append Only File
一、AOF原理
AOF的原理就是以日志的形式记录所有命令。那么恢复时只需要重新执行所有命令即可。
二、与RDB对比
写入速度 | 恢复速度 | 是否丢失数据 | 数据量 | |
---|---|---|---|---|
AOF | 快,即时写入 | 慢,日志会很大 | 很少丢失数据 | 无限变大 |
RDB | 慢,全量写入 | 快 | 因为时点性原因,如果宕机会丢失最近的数据 | 基本跟即时数据容量差不多 |
三、redis恢复方案
问题:如果只用RDB恢复,那会丢失最近的数据。只用AOF恢复,会很慢。怎么恢复才是最好的?
解决方案:
redis4.0以前,如果同时开启AOF和RDB,只会用AOF恢复。
redis4.0以后,可以选择同时用RDB+AOF恢复,既上一个时点的RDB+上一个时点之后的AOF恢复,好处是同时满足RDB恢复快,也能满足AOF不丢失数据的特点。
四、相关配置
AOF 3个级别:
appendfsync no // 并不是关闭AOF的意思,而是写数据只往buffer(缓冲流)里写,由操作系统来控制什么时候触发IO持久化到文件上
appendfsync AWAYS // 每一个命令都触发IO
appendfsync Everysec // 每秒触发一次IOno-appendfsync-on-rewrite no // 触发RDB或重写期间是否还写入AOF,no是依然写入AOF
aof-use-rdb-preamble yes // 此配置开启就是RDB+AOF恢复方式