简介
- AOF机制可以用来来恢复Redis宕机时丢失的数据。
- AOF机制的根本是将Redis执行的命令行记录成日志文件,存在指定的磁盘中。当Redis数据发生问题时,将日志文件记录的命令记录重新执行一遍。
实现
- 先执行Redis命令,再将命令存入磁盘(数据库)
- 保证语句正确性
- 保证redis执行效率
- 存在问题
- 存储后,记录日志服务宕机了,数据会丢失
- 记录日志和存储数据共用一个线程,难以避免相互阻塞
设计了三种回写机制,减小该问题的影响,提高性能: - Always,同步写回:每个写命令执行完,立马同步地将日志写回磁盘; - Everysec,每秒写回:每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘; - No,操作系统控制的写回:每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
- 重写机制
- 背景:随着redis运行时间加长,日志文件也会变大,写入耗时变长
- 目的:优化AOF文件,节省空间
- 机制举例:重复对"key1"进行
set
操作,AOF文件会进行整理,保留最后一次的set
操作值