欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

redis 持久性

最编程 2024-07-16 07:20:12
...
1 )执⾏ AOF 重写请求,如果当前进程正在执⾏ AOF 重写,请求不执⾏
并返回如下响应:
ERR Background append only file rewriting already in progress 如果当前进程正在执⾏ bgsave 操作,重写命令延迟到 bgsave 完成之后 再执⾏,返回如下响应: Background append only file rewriting scheduled
2 )⽗进程执⾏ fork 创建⼦进程,开销等同于 bgsave 过程
3 )主进程 fork 操作完成后,继续响应其他命令。所有修改命令依然写 AOF 缓冲区并根据 appendfsync 策略同步到硬盘,保证原有 AOF 机制 正确性 由于 fork 操作运⽤写时复制技术,⼦进程只能共享 fork 操作时的内 存数据。由于⽗进程依然响应命令, Redis 使⽤ “AOF 重写缓冲区 保存 这部 分新数据,防⽌新 AOF ⽂件⽣成期间丢失这部分数据
4 )⼦进程根据内存快照,按照命令合并规则写⼊到新的 AOF ⽂件。每 次批量写⼊硬盘数据量由配置 aof-rewrite-incremental-fsync 控制,默 认为 32MB ,防⽌单次刷盘数据过多造成硬盘阻塞
5 )新的 AOF ⽂件写⼊完成后,⼦进程发送信号给⽗进程,⽗进程更新 统计信息,具体⻅ info persistence 下的 aof_* 相关统计 ⽗进程把 AOF 重写缓冲区的数据写⼊到新的 AOF ⽂件 使⽤新 AOF ⽂件替换⽼⽂件,完成 AOF 重写

AOF的优缺点分析

AOF 的优点

数据保证:我们可以设置 fsync 策略,⼀般默认是 Everysec ,也可以设置每次写⼊追加,所以即使服务死掉了,也最多丢失⼀秒数据
⾃动缩⼩:当 AOF ⽂件⼤⼩到达⼀定程度的时候,后台会⾃动的去执⾏ AOF 重写,此过程不会影响主进程,重写完成后,新的写⼊将会写到新的 AOF 中,
旧的就会被删除掉。但是此条如果拿出来对⽐ RDB 的话还是没有必要算成优点,只是官⽹显示成优点⽽已。

AOF 的缺点

性能相对较差:它的操作模式决定了它会对 Redis 的性能有所损耗。(主线程写⽂档)
体积相对更⼤:尽管是将 AOF ⽂件重写了,但是毕竟是操作过程和操作结果仍然有很⼤的差别,体积也毋庸置疑的更⼤。
恢复速度更慢:因为要重新加载每条命令的执⾏,恢复速度⽐较慢