RDB文件是在redis的“快照”的模式下才会产生,那么如果我们理解了RDB文件的结构,是不是让我们对“快照”模式能做到一个心中有数呢???

一、RDB结构剖析
首先呢,我们要对RDB文件有一个概念性的认识,比如下面画的图一样:
从图中,我们大概看到了RDB文件的一个简要的存储模式,但为了更好的方便对照,我准备save一个empty database,对比一下看看效果:
然后我们用winHex打开dump.rdb文件,看看它的16进制。
好了,该打开的我都打开了,下面我们一一来比较一下。
1. Redis参数: 可以看到在16进制的前5个字节中,是“REDIS"五个大字母,这个的作用显而易见,肯定就是判断当前的文件是否为“RDB文件“,这样才方便用常量的时间来判别。。。
2. db_version: 在Redis字符之后,我们看到了占用4个字节的0006,这个就是RDB文件结构图中的 db_version。对吧,同样也很简单,就是判断当前Redis的版本号,对否???
3. database: 由于我演示的是一个empty database,自然没有相应的结构,等下我们再插入记录,再对比一下。
4. EOF: 从winHex上面你是否看到了,它占用一个字节的空间,就是一个“y”上面加了两点,由于用unicode无法表示,所以出现了这么个乱码,当然16进制可以标识,就是所谓的“FF”,看到了没有??? 那么它的作用就是标识database的结束。
5. checksum: 从名字上你就可以看得到,它就是一个校验和,原理当然就是看文件是否损坏,或者是否被修改,这样有点像现在的OAuth验证,对吧,它占用了8个字节,也就是最后的:DC B3 43 F0 5A DC F2 56。。。
二、带数据的RDB文件结构演示
好了,上面我已经演示了除Database之外的所有参数,下面我们来set一个最简单的string类型,看看database结构是否如图所示。
用WinHex打开dump.rdb文件如下:
为了方便对照,我在图中标记了一下Database开始的位置,也就是十六进制的 FE。。。
1. database [selectDB]: 可以看到,selectDB其实就是一个无法用unicode标记出来的一个字节,十六进制就是FE,当redis碰到这个字符的时候就知道自己该干嘛了。。。。要准备执行select命令了。。。
2. database[db_number]: 在FE之后,我们看到了十六进制的 ”03“,也就是切换到第三个数据库中,还记得吗? 我之前在set数据的时候,曾今执行过select 3,也就是将数据set到第3号数据库中,如果你忘记了,没关系,我用redis客户端打开给你看~~
3. database[pairs][type]: 当你知道select哪一号数据库之后,接下来的操作就是怎么去分析key,value数据了,在key/value数据中,第一个就是type,其实这个type就是你的value的encoding类型,可以看到在winHex中表示的0,也就是以下的源码:
4.database[pairs][key][len]: 在type之后,就是所谓的key,而key的组合模式是【len,value】,其中len就是key的长度,你也可以看到,winHex中表示的是 “04”,也就是说name的长度为4。对吧。。。
5.database[pairs][key][value] 同样的道理,这里的模式也是【len,value】,前面为value的length,后面为value的具体值。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# redis
# RDB结构
# Redis 彻底禁用RDB持久化操作
# 浅谈Redis中的RDB快照
# Redis 通过 RDB 方式进行数据备份与还原的方法
# Redis持久化RDB和AOF区别详解
# Redis打开rdb文件常用方法详解
# redis学习之RDB、AOF与复制时对过期键的处理教程
# Redis两种持久化方案RDB和AOF详解
# Redis RDB技术底层原理详解
# 可以看到
# 看到了
# 的是
# 图中
# 对吧
# 好了
# 是一个
# 如果你
# 是在
# 我在
# 第一个
# 让我们
# 我都
# 你也
# 才会
# 当你
# 心中有数
# 也很
# 我用
# 用了
相关文章:
制作证书网站有哪些,全国城建培训中心证书查询官网?
宁波免费建站如何选择可靠模板与平台?
如何快速搭建FTP站点实现文件共享?
Android使用GridView实现日历的简单功能
如何用西部建站助手快速创建专业网站?
大型企业网站制作流程,做网站需要注册公司吗?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
制作营销网站公司,淘特是干什么用的?
如何在香港服务器上快速搭建免备案网站?
公众号网站制作网页,微信公众号怎么制作?
公司门户网站制作流程,华为官网怎么做?
如何高效生成建站之星成品网站源码?
如何在服务器上配置二级域名建站?
建站之星展会模板:智能建站与自助搭建高效解决方案
外贸公司网站制作,外贸网站建设一般有哪些步骤?
北京网站制作的公司有哪些,北京白云观官方网站?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何通过远程VPS快速搭建个人网站?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何获取PHP WAP自助建站系统源码?
实例解析angularjs的filter过滤器
制作网站外包平台,自动化接单网站有哪些?
广东企业建站网站优化与SEO营销核心策略指南
大同网页,大同瑞慈医院官网?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何快速搭建高效简练网站?
如何快速辨别茅台真假?关键步骤解析
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
如何使用Golang安装API文档生成工具_快速生成接口文档
建站之星如何快速解决建站难题?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
制作农业网站的软件,比较好的农业网站推荐一下?
,sp开头的版面叫什么?
代刷网站制作软件,别人代刷火车票靠谱吗?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
建站之星如何快速更换网站模板?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
建站之星下载版如何获取与安装?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
建站之星logo尺寸如何设置最合适?
如何用花生壳三步快速搭建专属网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
建站之星好吗?新手能否轻松上手建站?
网站制作免费,什么网站能看正片电影?
*请认真填写需求信息,我们会在24小时内与您取得联系。