zoukankan      html  css  js  c++  java
  • AOF持久化

    AOF持久化是通话记录执行的命令进行存储的

    AOF持久化的事先可以分为

    (1)文件追加,新写入的命令都会被追加到redisserver的aof_buf缓冲区里面。

    在服务器每一次执行事件循环的时候都会判断是否需要写入同步aof文件

    这取决于服务器的配置

    appendfsync值

    always每一次都需要写入并且同步到AOF文件

    安全,效率满

    everysec 写入aof文件,如果距离上一次同步的超过一秒,那么就同步

    效率提高,但是可能丢失1秒的数据

    no,只写入,至于什么时候同步由操作系统决定

    文件的写入和同步:

    现在为了提高效率,写入文件的时候,通常会将数据写入一个内存缓冲区中,满的时候同步到磁盘里面,这样虽然提高了效率,但是安全也不保障不了的

    AOF文件的载入,需呀创建一个不带网络链接的为终端,用来执行AOF命令

    AOF重写

    为了解决aof文件的大的问题,我们需要通过BGREWRITEAOF进行重写,他不是通过读取旧的AOF文件,而是通过读取数据库进行创建新的AOF文件

    但是这个过程我们需要创建一个进程

    (1)这样可以复制父进程的数据,两个进程不会进行资源的争夺

    (2)防止server阻塞

    但是在重写的时候,新写入的命令怎么处理,这样我们引入了一个重写缓冲区,在执行重写的过程中,我们需要将client发来的命令发送到重写缓冲区

    所以在子进程执行重写的过程中,我们需要做3件事

    (1)sever执行client的请求并恢复

    (2)将命令追加到aof缓冲区里面

    (3)追加重写缓冲区

    当子进程执行结束后,会给父进程发送一个信号,这个时候我们将重写缓冲区的名ing重新追加到新的AOF文件中,这个时候我们将新deAOF文件原子性的覆盖就得AOF文件

  • 相关阅读:
    「SHOI2015」脑洞治疗仪
    LOJ 数列分块入门 8
    CF932F Escape Through Leaf
    NOIP2021游记总结
    [HEOI2016/TJOI2016]序列
    【模板】动态树(Link Cut Tree)
    LG P2839 [国家集训队]middle
    JZOJ 7377.欢乐豆
    JZOJ 7392. 【2021.11.17NOIP提高组联考】数 (ds)
    LOJ 数列分块入门 6
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/7075518.html
Copyright © 2011-2022 走看看