第五章:Redis持久化-AOF持久化
- 所有写入命令会追加到aof_buf缓冲区中
- AOF缓冲区根据对应的策略向硬盘做同步操作
- 随着AOF文件越来越大,需要定期对AOF文件做重写,达到压缩目的
- 当Redis服务器重启时,可以加载AOF文件进行数据恢复。
- 采用文本协议格式具有更好的兼容性
- 开始AOF后,所有写入命令都包含追加操作,直接采用协议格式,避免二次处理开销
- 文本协议具有可读性,方便直接修改和处理
- AOF通过追加到aof_buf缓冲区的方式,避免了直接追加到硬盘慢的问题,因为缓冲区时内存中的,相对于硬盘有更好的写入速度。另外,Redis可以提供多中缓冲区同步硬盘的策略;
- always:命令写入aof_buf后调用系统fsync操作同步到aof文件
- everysec:命令写入aof_buf后调用write操作,write完成后线程返回,fsync同步文件操作由专门线程每秒调用一次
- no:命令写入aof_buf后,调用系统write操作,不对aof文件做fsync同步,同步硬盘操作由操作系统负责,通常同步周期为最长30秒;
- 进程内已经超时的数据不在写入文件
- 旧的AOF文件含有无效命令,重写使用进程内数据直接生成,这样新的AOF文件只保留最终数据的写入命令;
- 多条写命令可以合并为一个。为了防止单条命令过大导致客户端缓冲区溢出,对于list、set、hash、zset等类型操作,以64位元素为界拆分为多条。
- 手动触发:调用bgrwriteaof命令
- 自动触发:使用auto-aof-rewrite-min-size和auto-aof-rewrite-percentage参数确定自动触发时机;
- 执行AOF重写命令
- 父进程执行fork创建子进程,开销等同于bgsave
- 主进程fork进程后,继续响应其他请求,所有写命令依然写入AOF缓冲区并根据appendfsync策略同步到硬盘,保证原有AOF机制正确性;
- 由fork操作运用写时复制技术,子进程只能共享fork操作时的内存数据;由于父进程依然响应命令,Redis使用“AOF重写缓冲区”技术保存这部分数据,防止新的AOF文件生成期间丢失这部分数据;
- 子进程根据内存快照,按照命令合并规则写入到新的AOF文件,需要控制每次写入量,防止硬盘阻塞;
- 新的AOF文件写入完成后,子进程发送信号给父进程,父进程更新统计信息
- 父进程把aof重写缓冲区的数据写入到新的aof文件
- 使用新的aof文件替换老文件,完成aof重写;
- AOF持久化开启且存在AOF文件时,优先加载aof文件
- aof关闭或者aof不存在时,加载rdb文件
- 加载aof/rdb文件成功后,redis启动成功
- aof/rdb文件存在错误时,redis启动失败并打印错误信息
转载于:https://www.cnblogs.com/use-D/p/10766040.html
第五章:Redis持久化-AOF持久化相关推荐
- 天天在用Redis,那你对Redis的AOF持久化到底了解多少呢?
为什么需要持久化,以及Redis持久化的RDB方式在这篇文章讲的已经很透彻了,足以吊打面试官了.而且此篇内容需要RDB文章的内容支持,所以建议先看下:看完这篇还不懂Redis的RDB持久化,你们来打我 ...
- Redis的AOF持久化的实现
Redis 分别提供了 RDB 和 AOF 两种持久化机制: RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中. AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参 ...
- 图解redis的AOF持久化
目录 1.引言 2.AOF持久化的实现 2.1命令追加 2.2AOF文件的写入 3.AOF的文件载入和数据还原 4.AOF重写 4.1AOF重写实现 4.2AOF后台重写(BGREWRITEAOF) ...
- Redis 中的 持久化 AOF持久化 打开AOF持久化功能 设置AOF文件的冲洗频率 AOF重写 AOF持久化的优缺点
这里写目录标题 15.2 AOF持久化 15.2.1 打开AOF持久化功能 15.2.2 设置AOF文件的冲洗频率 15.2.3 AOF重写 1.BGREWRITEAOF命令 其他信息 2.AOF重写 ...
- 《Redis设计与实现》笔记|SDS动态字符串|链表字典跳跃表整数集合压缩列表结构|redis中的对象|数据库原理|RDB持久化|AOF持久化|事件与多路利用模型|发布订阅原理|事务原理|慢查询日志
<Redis设计与实现>笔记 前记: 参考配套网站:http://redisbook.com 带注释的源码地址:https://github.com/huangz1990/redis-3. ...
- Redis数据持久化之AOF持久化
一.RDB持久化的缺点 创建RDB文件需要将服务器所有的数据库的数据都保存起来,这是一个非常耗费资源和时间的操作,所以服务器需要隔一段时间才能创建一个新的RDB文件,就也是说创建RDB文件的操作不能执 ...
- Redis 持久化策略 : RDB持久化、AOF持久化、混合持久化
文章目录 什么是持久化 RDB持久化 SAVA与BGSAVA RDB持久化的优缺点 AOF持久化 AOF重写 AOF持久化的优缺点 混合持久化 混合持久化的优缺点 什么是持久化 由于内存具有易失性,无 ...
- NoSQL之Redis非关系数据库(redis概述,持久化,RDB持久化,AOF持久,内存碎片)
关系型数据库与非关系型数据库 关系型数据库与菲关系型数据库 关系型数据库 非关系型数据库 非关系型数据库产生背景 Redis简介 Redis配置文件 Redis的安装 安装环境 Redis数据库常用命 ...
- 十九 Redis AOF持久化
RDB 持久化的缺点RDB 持久化,这种持久化可以将数据库里面的数据以二进制文件的形式储存到硬盘里面. RDB 持久化有一个缺点,那就是,因为创建 RDB 文件需要将服务器所有数据库的数据都保存起来, ...
最新文章
- 2048游戏的python实现
- JSP页面Table的数据绑定
- ALL in BERT:一套操作冲进排行榜首页
- 【线上直播】LiveVideoStack Meet | 长沙:多媒体与广电
- python读取上一级文件夹下的图片
- docker 查看日志_8个优秀Docker容器监控工具,收藏了
- Python学习笔记(列表和元组的简单实用)
- (10)Verilog HDL异步复位同步释放
- 计算机网络普遍采用什么传输方式,网络传输技术
- 微信小程序系列(3)如何用微信小程序写一个论坛?贴心代码详解(一)发帖
- 流畅的python不适合初学者_年度最值得关注Python进阶书——《流畅的Python》
- 【Java】Java文件读写
- IPv4地址中的保留和特殊用途地址
- 易语言 html做ui,易语言皮冯 易语言DirectUI界面库你的硬件也可美化超漂亮!
- h5 video在微信中 全屏播放 退出后的坑
- 单片机:数字电压表TLC2543 C程序代码
- 阿里云跨境游戏及电商网络加速方案(全球加速和CDN)
- 稳压二极管1N4733A使用方法
- 使用Slidingmenu爆出“Both setBehindContentView must be called in onCreate in addition to setContentView.”
- 数据结构系列-初识数据结构