REdis AOF文件结构分析
REdis-5.0之前的AOF文件没有文件头,不管是REdis-5.0之前还是REdis-5.0,它们的AOF文件体内容都如下图所示:
从REdis-5.0开始,AOF有文件头,目的是支持同时加载RDB和AOF文件。AOF文件头和RDB文件头基本相同,但RDB文件头多了三个字段。
先看AOF和RDB通用部分的文件头内容:
1) 头5字节固定为REDIS
2) 第6~9共四字节为RDB版本号
3) 接下来为redis-ver和它的值,即redis版本
4) 接着redis-bits和它的值,即redis的位数,值为32或64
5) 接着为ctime和它的值,值为当前时间戳
6) 接着为used-mem和它的值
7) 最后是aof-preamble和它的值,值为0或1,1表示RDB有效。
RDB的文件头和AOF基本相同,但在aof-preamble之前多了如下三项:
1) repl-stream-db
2) repl-id
3) repl-offset
AOF文件中并未保存已复制的偏移(repl-offset),这个信息只保存在RDB文件头中。因此当进程重启时,并不能从AOF文件恢复复制偏移,除非以RDB方式运行(配置项appendonly为NO时)。
但是从REdis-5.0开始,加载AOF文件时,先读AOF文件头,如果发现有文件头(Reading RDB preamble from AOF file...),则会先从RDB加载数据,并恢复前面提到的复制偏移(repl-offset)等三项数据,剩余部分再从AOF文件读取(Reading the remaining AOF tail...)。
欢迎工作一到五年的Java工程师朋友们加入Java架构师:697558955
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
转载于:https://blog.51cto.com/14233733/2367458
REdis AOF文件结构分析相关推荐
- Redis AOF 文件 恢复数据
redis AOF 文件 恢复数据 redis.conf 中,将配置 appendonly no,改为appendonly yes,将其打开. 通过 redis-server redis.conf 的 ...
- redis aof文件的格式 以及如何批量写入大量redis数据
aof文件的格式 如何能批量写入大量的redis数据 可以通过手写aof文件来写入. aof文件格式 *3 $3 set $3 we3 $4 1234 第一行的*3代表这个命令有三个参数 第二行的$3 ...
- redis aof 文件重写机制
redis 随着命令不断的写入数据,aof 文件会越来越大.为了解决这个问题,redis 引入了 aof 文件重写机制,以便压缩 aof 体积 ,更小的 aof 文件可以更快的被 redis 加载. ...
- 使用redis.conf无法启动Redis// aof 文件损坏 // Bad file format reading the append only file
今天在输入./redis-server ../redis.conf启动redis时,发现Redis没有正常启动... 排查: 首先正常启动redis-server,并查看Redis的启动状态 ./re ...
- 阿里二面:Redis 中的 AOF 文件太大了怎么办?
一.前言 写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题.不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF.但老周这里盲猜面 ...
- Redis的RDB文件与AOF文件
本笔记参考<Redis设计与实现> P118 ~ P150 RDB文件 1.RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据 2.SAVE命令由服务器进程直接执行保存操 ...
- redis缓存清除策略 、获取dumb.rdb或者***.aof文件的位置
redis缓存清除策略 获取dumb.rdb或者***.aof文件的位置
- 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 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多.但是一旦进程退出,Redis 的数据就会丢失. 为了解决这个问题,Re ...
最新文章
- 【最新阿里-京东-美团-滴滴-面试题及答案】
- sql 汉字转首字母拼音
- 开源项目_可能使用到的开源项目集合
- 使用gradle-android搭建jenkins slave构建机器常见构建问题(一)
- linux桌面环境 mac os,在Windows或Linux桌面上使用Mac OS Dashboard Widget | MOS86
- python list对象
- android 中文语音
- Linux中使用Systemtap调试SLUB
- HDU 6356.Glad You Came-线段树(区间更新+剪枝) (2018 Multi-University Training Contest 5 1007)...
- Exchange Server 2010部署安装之一
- 利用Java制作背单词小应用
- 51Nod-1049 最大子段和【DP】
- 排序系统 c语言程序设计,c语言程序设计(排序算法).docx
- 游戏筑基之选择分支语句(C语言)
- 飞机大战小游戏2.0
- SpringApplication run方法第四步解析(三)[(未完结,暂搁置)]
- css 伪类 :fullscreen 应用于当前处于全屏显示模式的元素。
- PostgreSQL中文手册
- samba文件共享服务器,全网最详细的samba文件共享服务!
- 2021-11-12号-java面试题-北京
热门文章
- java filehelper_Spring 发送邮件 使用File指定附件
- linux之用 grep -r 关键字
- python上下文管理器
- 安卓html可以删除吗,如何删除android中的html标签
- android 退出app代码_uniapp退出APP应用(IOS+安卓)
- 【TypeScript】parseInt 函数将字符串转换为整数
- 【新星计划】Linux命令行相关指令汇总
- Anaconda conda常用命令
- MATLAB基本语法 初学者
- 我们注意到您的计算机目前处于离线状态_如何将您的计算机添加到Pekka网络