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文件结构分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从零开始学数据结构和算法(二)线性表的链
- 下一篇: 个人博客(前端菜鸡)持续开发中,可前往