Redis 持久化 --AOF
AOF:
AOF机制会在命令写后将执行命令写入磁盘日志,潜在风险:
当刚写入还未将执行命令记录在磁盘日志时出现宕机。
AOF日志也是在主线程上运行,写入磁盘的 IO操作必然会在紧凑的 redis读写操作下造成堵塞后面的 redis操作。
AOF 三种回写策略(可配置):
Always: 同步写回(每个写命令执行完,立马同步地将日志写回磁盘)
Everysec: 每秒写回(每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘)
No: 操作系统控制的写回(每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘)
AOF 重写机制:
背景:
文件系统本身对文件大小有限,对于日志文件无法一直累加。
日志文件越大,写入的操作时间越久,这在主线程上是非常糟糕的。
发生宕机后,文件重新执行命令,若文件太大,影响 redis的故障恢复速度。
AOF重写不在主线程,而是在主线程 fork一个线程(bgrewriteaof)来避免阻塞主线程。AOF重写是将同一个 key的多个操作步骤融合成一个操作步骤,然后将此操作步骤存储在新的日志中。
评论