redis aof 文件重写机制
redis 随着命令不断的写入数据,aof 文件会越来越大。为了解决这个问题,redis 引入了 aof 文件重写机制,以便压缩 aof 体积 ,更小的 aof 文件可以更快的被 redis 加载。
aof 文件重写是将 redis 中的数据转换为 写命令同步更新到 aof 文件的过程。
重写 aof 后 为什么么可以变小
- 清除了一些无效命令 eg. del srem
- 进程内超时的数据不再写入 aof 文件
- 多条写命令可以合并为批量写命令 eg.
lpush list v1 lpush list v2 lpush list v3 合并为一条写入命令 lpush list v1 v2 v3
aof 重写流程
执行 aof 重写请求
如果当前进程正在执行 aof 重写,请求不执行并返回如下响应
ERR Background append only file rewriting already in process
如果当前正在执行bgsave
,重写命令等待bgsave
完成后执行 ,返回如下响应
Background append only file rewriting shceduled
父进程执行 fork 创建子进程,开心等同于
bgsave
过程父进程 fork 操作完毕之后,依然响应其他命令,所有修改命令依然写入 aof 缓冲区,并根据
appendfsync
策略同步到硬盘,保证原有 aof 机制的有效性。由于 fork 操作采用写时复制技术,子进程只能共享fork 操作时的内存数据,由于父进程依然响应命令,redis 使用
aof 重写缓冲区
保存这部分新数据,防止aof文件生成期间这部分数据的丢失。子进程根据内存快照,按照命令合并规则写入到新的 aof 文件
新 aof 文件 写入完成之后,子进程通知 父进程,父进程更新统计信息
父进程把 aof 重写缓冲区的数据写入 新的 aof 文件
使用 新 aof 文件替换 旧的 aof 文件
摘自 《redis 开发与运维》一书
redis aof 文件重写机制相关推荐
- Redis AOF 文件 恢复数据
redis AOF 文件 恢复数据 redis.conf 中,将配置 appendonly no,改为appendonly yes,将其打开. 通过 redis-server redis.conf 的 ...
- REdis AOF文件结构分析
REdis-5.0之前的AOF文件没有文件头,不管是REdis-5.0之前还是REdis-5.0,它们的AOF文件体内容都如下图所示: 从REdis-5.0开始,AOF有文件头,目的是支持同时加载RD ...
- redis aof文件的格式 以及如何批量写入大量redis数据
aof文件的格式 如何能批量写入大量的redis数据 可以通过手写aof文件来写入. aof文件格式 *3 $3 set $3 we3 $4 1234 第一行的*3代表这个命令有三个参数 第二行的$3 ...
- 使用redis.conf无法启动Redis// aof 文件损坏 // Bad file format reading the append only file
今天在输入./redis-server ../redis.conf启动redis时,发现Redis没有正常启动... 排查: 首先正常启动redis-server,并查看Redis的启动状态 ./re ...
- 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 中的 AOF 文件太大了怎么办?
一.前言 写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题.不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF.但老周这里盲猜面 ...
- Redis AOF重写实现原理
AOF(append only file)对Redis进行持久化是通过保存被执行的写命令来记录数据库状态的,随着服务器运行,AOF文件内容越来越多,载入AOF文件的时间会越来越长,影响Redis服务. ...
- Redis AOF 持久化详解
来自公众号:程序员历小冰 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多.但是一旦进程退出,Redis 的数据就会丢失. 为了解决这个问题,Re ...
- 转-Redis AOF 持久化详解
转自: https://juejin.cn/post/6844903902991630349 Redis AOF 持久化详解 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据 ...
最新文章
- 行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...
- 一文学会动态规划解题技巧
- php连接数据库语言,PHP语言连接MYSQL数据库实例代码
- 神目 Android 人脸识别SDK编译说明
- 在学术论文投稿时你遇到过最奇葩的审稿意见是什么?
- 程序猿永远就是程序员的命么?
- 练习-前程无忧数据爬取
- linux-目录查询命令-目录内容查看-ls查询-tree查询-查询类容分类-不同颜色对应不同类型
- 获取页眉值vba_VBA抓取股票历史数据的整体表处理
- 光通量发光强度照度亮度关系_照度、强光、光通量之间是什么关系
- JDK集合框架结构分析(二)
- Unity粒子系统——简易特效制作(一)
- 值得收藏的5款办公软件,PDF转Word不再头疼
- 电机驱动软件学习笔记——ADC采样电流、温度、按键值
- win7旗舰版6l打印机咋安驱动_打印机安装不了,教您解决打印机驱动安装不了
- aid learning安装应用_极致安卓—Termux/Aid Learning安装宇宙最强VS Code
- 方便实用的串口调试工具/串口调试助手/串口精灵 (工具一)
- 畜牧兽医职称需要考英语和计算机,畜牧兽医专业技术职称考试试题
- Android框架——下载图片框架Fresco
- 百趣代谢组学文献分享:大麦盐胁迫响应机制的组学分析
热门文章
- 嵌入式linux环境取得U盘容量等信息的方法
- android连接php的url,android编程-解析URL-类同php的parse_url函数
- 30岁哥大计算机博士生遇刺身亡!论文刚被顶会接收,曾留学中国
- COB,COF,COG区别
- NOIP2017 游记
- python flask实战订餐系统微信小程序-60nginx + uwsgi 实现多进程访问
- python 判断一个list列表是否包含另一个list列表
- 2020年工作上的最大收获——监控告警体系
- 为什么OKR新手要懂得OKRs-E?
- 介绍一个python工程师必须掌握的 CentOS 命令,nohup