持久化操作
时点快照
Rdb除了时点快照,还进行了持久化的命令,rdb的优点是不占用内存
缺点是会丢失数据,并且会造成阻塞。
AOF:追加新的指令,而不是覆盖。
AOF可以做到实时的进行备份,不丢失任何数据,可允许范围内的丢失。
Buffer缓冲区
AOF写到缓冲区是写到系统内核的缓冲区,
先把内容写到缓冲区。
三种写入策略:
Always:每写一次调用一次缓冲区方法
Everysec(默认):每秒进行一次持久化的操作,丢失数据,最多丢失的是一秒的数据。。加入内存的缓冲区小于一秒,则丢失的数据是一个缓冲区的数据,而且兼顾了整个内存数据的效率。
No:操作系统内存满了的时候才写。
AOF文件重写机制,利用fork调用子进程,专门进行文件重写,
Aof--->临时
新的文件产生之后,老的文件
Editlog每一个小时或者64M进行一次持久化的操作。
扩容的百分比,数组拷贝,
AOF压缩——————>aof压缩(64M,压缩成32M),传递进来的新的AOF会替代老的AOF
不断地传递新的文件,当AOF再次达到64M的时候,再次压缩,再次压缩时是将新的文件再压缩,新的文件加上次压缩的老的AOF文件,多次循环成64M,这时AOF不能再压缩,造成死循环,这时就需要扩容
两个属性的原因,
一个是处发量:
另一个是:
AOF的优点:如果误造作了(flushall),马上停服务,还可以恢复。
缺点:相同的数据集,AOF文件体积较RDB大了很多
恢复数据速度较RDB慢。