美文网首页
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

    AOF的原理 1.通过保存redis服务器的所执行的写命令来记录数据库状态。 2.当然redis服务器会自动包含s...

网友评论

      本文标题:Redis--AOF

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