• 技术文章 >数据库 >Redis

    AOF持久化是什么意思

    hzchzc2020-06-28 14:25:44原创943

    AOF持久化意思是以独立日志的方式记录每次写命令,并在Redis重启时在重新执行AOF文件中的命令以达到恢复数据的目的,AOF的主要作用是解决数据持久化的实时性。

    Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。但是一旦进程退出,Redis 的数据就会丢失。

    为了解决这个问题,Redis 提供了 RDB 和 AOF 两种持久化方案,将内存中的数据保存到磁盘中,避免数据丢失。RDB的介绍在这篇文章中《Redis RDB 持久化详解》,今天我们来看一下 AOF 相关的原理。

    AOF( append only file )持久化以独立日志的方式记录每次写命令,并在 Redis 重启时在重新执行 AOF 文件中的命令以达到恢复数据的目的。AOF 的主要作用是解决数据持久化的实时性。

    RDB 和 AOF

    antirez 在《Redis 持久化解密》一文中讲述了 RDB 和 AOF 各自的优缺点:

    AOF持久化的步骤?

    1、命令追加步骤
    首先服务器将对数据库的写操作命令放入AOF缓冲区中,并通过周期函数来检查是否需要将缓冲区内的内容写入AOF文件中(一般有三种策略:always,everysecond,no)。这三种策略是在安全性与效率之间的平衡。

    2、数据还原
    通过创建一个不带网络连接的伪客户端,并依次执行AOF中的命令,从而实现数据的还原。

    3、AOF重写
    因为AOF是记录写操作命令,会导致文件的冗余,只要通过对数据库当前状态的重新读出,从而可以实现AOF的精简。
    具体流程如下:
    首先创建一个子进程(为什么不用线程呢?因为线程会造成锁,导致效率低下。而且用子进程不会阻塞父进程)
    然后父进程创建一个AOF重写缓冲区,用于记录在AOF重写期间执行的写入命令。
    一个写命令会同时发送给AOF缓冲区和AOF重写缓冲区。
    然后等到重写完成,子进程向父进程发送信号,父进程会将AOF重写缓冲区的内容追加的新的AOF文件中,并原子化的替换原先的AOF文件。

    推荐教程: 《Redis教程

    以上就是AOF持久化是什么意思的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:AOF Redis
    上一篇:Redis的特点有哪些 下一篇:什么是Redis事务
    大前端线上培训班

    相关文章推荐

    • Redis灾备方案,除了rdb快照和M/S主从,aof日志,还有没有其他方• redis突然掉电导致aof文件损坏修复一例• 验证Redis的快照和AOF• Redis RDB和AOF详解

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网