公司网站建设开源平台,一级 爰做片免费网站,网页设计图片如何显示,北京国企设计院排名一、AOF定义
保存写操作命令到日志的持久化方式#xff0c;就是 Redis 里的 AOF(Append Only File) 持久化功能
定义#xff1a;以日志的形式记录每个操作#xff0c;记录写指令不记录读指令#xff0c;只许追加⽂件不允许修改#xff0c;AOF保存的是appendonly.aof⽂件…一、AOF定义
保存写操作命令到日志的持久化方式就是 Redis 里的 AOF(Append Only File) 持久化功能
定义以日志的形式记录每个操作记录写指令不记录读指令只许追加⽂件不允许修改AOF保存的是appendonly.aof⽂件恢复的时候从前到后执行⼀次。 二、AOF过程
Redis 是先执行写操作命令后才将该命令记录到 AOF 日志里的
这样的好处有两点
1.避免额外的检查开销。
2.不会阻塞当前写操作命令的执行 AOF有两个风险
1.执行写操作命令和记录日志是两个过程那当 Redis 在还没来得及将命令写入到硬盘时服务器发生宕机了这个数据就会有丢失的风险。
2.第二个风险前面说道由于写操作命令执行成功后才记录到 AOF 日志所以不会阻塞当前写操作命令的执行但是可能会给「下一个」命令带来阻塞风险。 三、Redis三种写入硬盘的策略
Redis写入硬盘的过程
1. Redis 执行完写操作命令后会将命令追加到 server.aof_buf 缓冲区 2. 然后通过 write() 系统调用将 aof_buf 缓冲区的数据写入到 AOF 文件此时数据并没有写入到硬盘而是拷贝到了内核缓冲区 page cache等待内核将数据写入硬盘 3. 具体内核缓冲区的数据什么时候写入到硬盘由内核决定。
三种写入硬盘的策略
1. Always每次写操作命令执行完后同步将 AOF 日志数据写回硬盘 2. Everysec每次写操作命令执行完后先将命令写入到 AOF 文件的内核缓冲区然后每隔一秒将缓冲区里的内容写回到硬盘 3. No意味着不由 Redis 控制写回硬盘的时机转交给操作系统控制写回的时机也就是每次写操作命令执行完后先将命令写入到 AOF 文件的内核缓冲区再由操作系统决定何时将缓冲区内容写回硬盘。 四、AOF重写机制
当 AOF 文件的大小超过所设定的阈值后Redis 就会启用 AOF 重写机制来压缩 AOF 文件。
AOF 重写机制是在重写时读取当前数据库中的所有键值对然后将每一个键值对用一条命令记录到「新的 AOF 文件」等到全部记录完后就将新的 AOF 文件替换掉现有的 AOF 文件。 五、AOF优缺点
▪ 优点
• 如果后台线程每秒执行fsync数据最多丢失⼀秒
• 直接追加在⽂件末尾写入性能⾼
▪ 缺点
• aof文件大恢复速度慢
• 数据恢复慢不适合做冷备