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文件结构分析相关推荐

  1. Redis AOF 文件 恢复数据

    redis AOF 文件 恢复数据 redis.conf 中,将配置 appendonly no,改为appendonly yes,将其打开. 通过 redis-server redis.conf 的 ...

  2. redis aof文件的格式 以及如何批量写入大量redis数据

    aof文件的格式 如何能批量写入大量的redis数据 可以通过手写aof文件来写入. aof文件格式 *3 $3 set $3 we3 $4 1234 第一行的*3代表这个命令有三个参数 第二行的$3 ...

  3. redis aof 文件重写机制

    redis 随着命令不断的写入数据,aof 文件会越来越大.为了解决这个问题,redis 引入了 aof 文件重写机制,以便压缩 aof 体积 ,更小的 aof 文件可以更快的被 redis 加载. ...

  4. 使用redis.conf无法启动Redis// aof 文件损坏 // Bad file format reading the append only file

    今天在输入./redis-server ../redis.conf启动redis时,发现Redis没有正常启动... 排查: 首先正常启动redis-server,并查看Redis的启动状态 ./re ...

  5. 阿里二面:Redis 中的 AOF 文件太大了怎么办?

    一.前言 写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题.不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF.但老周这里盲猜面 ...

  6. Redis的RDB文件与AOF文件

    本笔记参考<Redis设计与实现> P118 ~ P150 RDB文件 1.RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据 2.SAVE命令由服务器进程直接执行保存操 ...

  7. redis缓存清除策略 、获取dumb.rdb或者***.aof文件的位置

    redis缓存清除策略 获取dumb.rdb或者***.aof文件的位置

  8. 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重写 ...

  9. Redis AOF 持久化详解

    来自公众号:程序员历小冰 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多.但是一旦进程退出,Redis 的数据就会丢失. 为了解决这个问题,Re ...

最新文章

  1. 【最新阿里-京东-美团-滴滴-面试题及答案】
  2. sql 汉字转首字母拼音
  3. 开源项目_可能使用到的开源项目集合
  4. 使用gradle-android搭建jenkins slave构建机器常见构建问题(一)
  5. linux桌面环境 mac os,在Windows或Linux桌面上使用Mac OS Dashboard Widget | MOS86
  6. python list对象
  7. android 中文语音
  8. Linux中使用Systemtap调试SLUB
  9. HDU 6356.Glad You Came-线段树(区间更新+剪枝) (2018 Multi-University Training Contest 5 1007)...
  10. Exchange Server 2010部署安装之一
  11. 利用Java制作背单词小应用
  12. 51Nod-1049 最大子段和【DP】
  13. 排序系统 c语言程序设计,c语言程序设计(排序算法).docx
  14. 游戏筑基之选择分支语句(C语言)
  15. 飞机大战小游戏2.0
  16. SpringApplication run方法第四步解析(三)[(未完结,暂搁置)]
  17. css 伪类 :fullscreen 应用于当前处于全屏显示模式的元素。
  18. PostgreSQL中文手册
  19. samba文件共享服务器,全网最详细的samba文件共享服务!
  20. 2021-11-12号-java面试题-北京

热门文章

  1. java filehelper_Spring 发送邮件 使用File指定附件
  2. linux之用 grep -r 关键字
  3. python上下文管理器
  4. 安卓html可以删除吗,如何删除android中的html标签
  5. android 退出app代码_uniapp退出APP应用(IOS+安卓)
  6. 【TypeScript】parseInt 函数将字符串转换为整数
  7. 【新星计划】Linux命令行相关指令汇总
  8. Anaconda conda常用命令
  9. MATLAB基本语法 初学者
  10. 我们注意到您的计算机目前处于离线状态_如何将您的计算机添加到Pekka网络