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文件

  • 相关阅读:
    mongodb群集
    AtoS查看iOS Crash log中的16进制代码日志
    Info.plist 的字段解释
    IOS --关于粘贴板 ,剪切板 ,UILabel的复制
    UItableView 所有内容保存为图片
    ios 工程图片清理shell
    检查项目图片是否被使用
    ios 联网 在mac机器上进行抓包
    还在为不停build 烦恼么?看这里~~
    修复OS X的Finder中文档 打开方式中重复程序的问题
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/7075518.html
Copyright © 2011-2022 走看看