通过redis-cli中执行save或者bgsave可以得到RDB文件(文件名由配置文件中dbfilename指定,例如dbfilename "dump.rdb"),这个文件包含Redis实例中全量的数据,那么dump.rdb的文件格式大概是什么样的呢?

RDB文件定义

获取RDB文件

我们首先通过redis-cli中执行save得到dump.rdb文件,然后用WinHex打开这个文件:

dump.rdb.png

说明:导出RDB文件时整个Redis实例中db=0里有个string类型的username,值为afei;db=6里有个string类型的uname,值为root,且设置了失效时间;

剖析RDB文件

根据WinHex达到的dump.rdb文件一个一个字节剖析文件真实的内容,以52这个16进制数为例,其十进制数值为82,通过ASCII码对照表可知,82对应的字符是R,相应的:45->69->E,44->68->D,49->73->I,53->83->S,最终该RDB文件内容如下:REDIS

验证RDB文件定义

前面5个16进制52 45 44 49 53已经被验证为REDIS

30 30 30 36则表示RDB文件版本号

FE表示db选择器编码,00则表示选择编号为0这个db

00这个ASCII码对应的字符为NUT,即

08这个ASCII码对应的字符为BS,即BackSpace退格按键;

75 73 65 72 6E 61 6D 65 04 61 66 65 69 则表示:

说明:04这个ASCII对应的字符是EOT,表示文尾,end of transmission;所以username的值afei是另起一行;

FE表示db选择器编码,06则表示选择编号为6这个db

FC表示设置了毫秒级失效,接下来的8个字节表示失效时间的Unix时间戳;

4F D7 D3 E4 5D 01 00 00 00 表示失效时间Unix时间戳;

05这一个字节表示value的类型:string,hash,list ,set,sorted set;

75 6E 61 6D 65 04 72 6F 6F 74则表示:

FF表示RDB文件结束;

C7 41 31 D7 AA 1F 24 A2这8个字节表示整个RDB文件的rdbsum CRC 64;

作者:阿飞的博客

来源:https://www.jianshu.com/p/c210851d3558

本文著作权归作者所有,如若转载,请注明出处

转载请注明:文章转载自「 Java极客技术学习」https://www.javajike.com

java读取rdb_剖析Redis RDB文件相关推荐

  1. 深入剖析Redis RDB持久化机制

    本文来自@凡趣科技 pesiwang同学的投稿分享,对Redis RDB文件持久化的内部实现进行了源码分析. 本文分析源码基于 Redis 2.4.7 stable 版本.下面是其文章原文: rdb是 ...

  2. 使用Java读取 “Python写入redis” 的数据踩坑记录

    https://my.oschina.net/u/2338224/blog/3061507 使用Java读取 "Python写入redis" 的数据踩坑记录 https://seg ...

  3. redis rdb文件恢复数据注意、踩坑

    redis rdb文件恢复数据注意.踩坑 我是docker安装的redis,拷贝dump.rdb文件到挂在的目录下后 重启docker redis,数据并没有被恢复.dump.rdb文件竟然被覆盖掉了 ...

  4. Redis RDB文件的解析工具梳理(rdr/redis-rdb-tools)

    前言 目前关于Redis rdb文件解析的工具,目前了解到的主要有python写的 redis-rdb-tools 工具,和用golang写的 rdr 工具. https://github.com/s ...

  5. java读取系统中指定的文件_java读取jar中指定的文件

    Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...

  6. java读取json配置文件_解决:java 读取 resources 下面的 json 文件

    前言:java 读取 工程下的配置文件,文件类型为 json(*.json),记录一下始终读取不到 json 文件的坑.maven项目 直接上工具类代码 package com.yule.compon ...

  7. es elasticsearch 几种常见查询场景 二次分组 java读取es的查询json文件

    大家好,我是烤鸭: es中几种常见的查询场景,使用java读取es的json文件进行查询. es 中文使用手册. https://www.elastic.co/guide/cn/elasticsear ...

  8. Redis RDB文件解析

    Redis RDB是什么 Redis rdb是Redis快照存储持久化方式,具体就是将Redis某一时刻的内存数据保存到硬盘的文件当中,默认保存的文件名为dump.rdb,而在Redis服务器启动时, ...

  9. java 读取jar包中的文件

    文章目录 项目resource中文件路径和jar包中文件路径的区别 正常读取 jar包读取 完整代码: 项目resource中文件路径和jar包中文件路径的区别 打成jar包后,是一个整体的文件. 正 ...

最新文章

  1. word2vec实例详解python_Python实现word2Vec model过程解析
  2. 服务端开发学习路径图,心疼小哥哥们
  3. [Animations] 快速上手 iOS10 属性动画
  4. 【转】刨根究底字符编码之十五——UTF-32编码方式
  5. python判断正负的函数_Python |在计算操作的函数内将负数转换为正数?
  6. 60-100-028-使用-MySQL 主从复制
  7. Windows Server 8 Tips (二) Hyper-V 3:用PowerShell导出和导入虚拟机
  8. 关于PHP会话:session和cookie
  9. LOJ #10130 点的距离
  10. kettle数据脱敏
  11. “女主播翻车”骂声不断,店湾妹感慨:主播界怎么了?三观已毁!
  12. html按钮动态效果,8款超酷而实用的CSS3按钮动画
  13. ORAN C平面 Section Type 3
  14. ad电阻原理图_arduino传感器专辑之光敏电阻模块
  15. c语言入门经典+第5版+习题答案,C语言入门经典(第5版)
  16. Android开发工程师常见面试题整理
  17. Latex 表格文字居中(垂直和水平居中)
  18. HTML小游戏14 —— H5横版冒险游戏《无限生机》(附完整源码)
  19. cloudflare免费证书_使用百度云加速免费加速你的博客
  20. java课前演讲讲什么_课前演讲讲什么比较有创意(逼格)?

热门文章

  1. Python手记-1:Windows10、macOS、CentOS7平台下Python3环境搭建简介
  2. Exchange邮件服务器安全
  3. Excel 中合并单元格的快捷键(ALT+H+M+M)
  4. Modules的概念及使用
  5. 详解梯度下降法的三种形式BGD、SGD以及MBGD
  6. 音乐推荐相关API接口
  7. Unity实现写毛笔字
  8. 剑指OFFER----51、数组中的逆数对(js实现)
  9. 自定义防抖函数五步应对复杂需求
  10. Delphi 中 FindWindow 和 FindWindowEx 的语法和用法