美文网首页
Redis--AOF

Redis--AOF

作者: 简书徐小耳 | 来源:发表于2019-04-17 17:07 被阅读0次

    AOF的原理

    • 1.通过保存redis服务器的所执行的写命令来记录数据库状态。
    • 2.当然redis服务器会自动包含select操作(选择数据库)
    • 3.当服务器执行完写命令,会以协议格式将被执行的写命令追加到服务器状态的aof_buf的缓冲区末尾

    aof_buf 写入到AOF文件的逻辑

    • 1.always:每次一个命令执行完毕将缓冲区的所有内容写入并同步到AOF文件(同步是等到数据强制罗盘)
    • 2.everysec:每次一个命令执行完毕将缓冲区的所有内容写入到AOF文件,如果距离上一次同步超过1秒则执行同步。
    • 3.no:每次一个命令执行完毕将缓冲区的所有内容写入,同步则是由操作系统自己执行。

    载入AOF文件的逻辑

    • 1.创建一个fake client(因为命令只能在客户端执行)
    • 2.从AOF文件分析并读取一条写命令。
    • 3.使用伪客户端执行写命令。

    AOF重写

    • 1.因为AOF文件越来越大,所以重写AOF文件(因为可能有很多命令是针对一个key执行的可以变为一个命令)
    • 2.首先创建新的AOF文件
    • 3.遍历数据库
    • 4.指定数据库
    • 5.遍历数据库中的所有键,使用一条命令去记录键值对。
    • 6.忽略已经过期的键
    • 7.如果键有过期时间,会对过期时间也重写(过期键)
    • 8.上述会采用子进程(子进程包含父进程的数据)去执行
    • 9.在子进程重写期间,新的命令会放入AOF重写缓冲区。
    • 10.redis服务器执行完一个写命令,同时将写命令发送给AOF缓冲区和AOF重写缓冲区。
    • 11.当子进程扫描完所有数据库则会给父进程发送信号,父进程调用信号处理函数
    • 12.信号处理函数:将AOF重写内容写入到新的AOF文件,然后对新的AOF文件进行改名,原子覆盖现有的AOF文件。
    • 13.信号函数处理完毕父进程才会继续接受请求。

    相关文章

      网友评论

          本文标题:Redis--AOF

          本文链接:https://www.haomeiwen.com/subject/tkenwqtx.html