redis(6)——AOF持久化
来源:互联网 发布:五婶软件下载 编辑:程序博客网 时间:2024/06/09 19:43
与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。
一、AOF持久化的实现
AOF持久化功能的实现可以分为命令追加(append)、文件写入、文件同步(sync)三个步骤。
1、命令追加
当AOF持久化功能处于打开状态时,服务器在执行完一个写命令之后,会以协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区的末尾:
2、AOF文件的写入与同步
因为服务器在处理文件事件时可能会执行写命令,使得一些内容被追加到aof_buf缓冲区里面,所以在服务器每次结束一个事件循环之前,它都会调用flushAppendOnlyFile函数,考虑是否需要将aof_buf缓冲区中的内容写人和保存到AOF文件里面。
flushAppendOnlyFile函数的行为由服务器配置的appendfsync选项的值来决定。
3、AOF文件的载入与数据还原
载入过程
服务器读人AOF文件,并根据文件内容来还原数据库状态
二、AOF重写
1、AOF文件重写的实现
首先从数据库中读取键现在的值,然后用一条命令去记录键值对,代替之前记录这个键值对的多条命令,这就是AOF重写功能的实现原理。
2、AOF后台重写
为了解决这种数据不一致问题,Redis服务器设置了一个AOF重写缓冲区,这个缓冲区在服务器创建子进程之后开始使用,当Redis服务器执行完一个写命令之后,它会同时将这个写命令发送给AOF缓冲区和AOF重写缓冲区。
当子进程完成AOF重写工作之后,它会向父进程发送一个信号,父进程在接到该信号之后,会调用一个信号处理函数,并执行以下工作:
1)将AOF重写缓冲区中的所有内容写人到新AOF文件中,这时新AOF文件所保存的数据库状态将和服务器当前的数据库状态一致。
2)对新的AOF文件进行改名,原子地(atomic )覆盖现有的AOF文件,完成新旧两个AOF文件的替换。
- redis(6)——AOF持久化
- Redis的持久化——AOF
- Redis源码分析(十五)——持久化AOF
- Redis——持久化机制(RDB和AOF)
- Redis AOF持久化
- Redis AOF持久化
- redis持久化--AOF
- Redis 持久化 AOF
- redis 持久化AOF
- Redis-AOF持久化
- 【redis】AOF 持久化
- Redis的持久化——RDB和AOF
- redis的持久化——RDB和AOF
- redis的持久化——RDB和AOF
- Redis——数据持久化AOF与RDB
- redis的持久化(RDB/AOF)
- Redis的持久化(RDB&&AOF)
- Redis持久化之AOF(三)
- Java编程思想重点笔记(Java开发必看)
- docker 常用命令
- 类加载
- mysql一些操作技巧
- [LeetCode-Algorithms-53] "Maximum Subarray" (2017.10.19-WEEK7)
- redis(6)——AOF持久化
- 从C++到Go
- java 容器
- 找0到1000之间任意数的阶乘后得到的数末尾0的个数
- ASP.NET MVC利用input通过ajax上传文件
- Linux安装JDK,tomcat等配置
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 2018秋招 今日头条1017 房间
- 我的Linux系统入坑之路