压缩列表本身并不复杂, 但是它的实现很繁琐 这几天身体与灵魂均被掏空, 可能需要停更几天。 这一讲只讲了压缩列表本身是什么, 以及它的原理, 没有讲具体实现。 视频下载地址 时间: 2024-10-16 07:35:40
身体被掏空了一星期, 前天终于挣扎着继续做这个代码走读 不得不说, 压缩列表的实现复杂程度还是超出了我的预计 破天荒的第一次, 我必须手动上注释, 才能防止自己迷失在代码里面. 今天还没有录制视频, 最近一直在做公司的事, 时间也比较紧, 所以今天只是把我经过注释的压缩列表部分的代码贴出来, 同时给出一个阅读建议 在学习压缩列表的过程中, 我也参考了黄健宏先生对Redis2.6源代码的注释, 发现了黄先生注释中的一个错误. 如下: unsigned char *ziplistFind(unsig
这是Redis中我们碰到的第一个比较复杂的数据结构 字典部分预计共分三部分 第一部分, 也就是今天的视频, 是一个开场, 用手机录的, 把我自己对Redis中字典的设计逻辑给大家讲一讲 后两部分则才是真正的代码走读, 在代码层面细说字典的实现 今天的视频比较大, 时间却比较短..并且录到最后一部分的时候手机内存满了. 总共两个视频文件, 第二个视频文件只有几十秒. 大家凑合看吧 视频下载地址
字典中其它API的实现.. 下一讲可能要等几天, 或许不用等, 取决于我的工作效率与热情. 因为在Redis的数据结构中, 截止字典, 已经把设计组织最清晰的那部分讲完了. 接下来的数据结构部分是互相纠缠的. 我需要时间去分析一下. 视频下载地址
这一节和下一节将介绍Redis中对C语言字符串的封装 在Redis中, 这种字符串被称谓SDS, 也就是简单(s)动态(d)字符串(s) 也就是说, 从今天开始, 将逐步先介绍Redis底层的数据结构实现 视频下载地址:http://pan.baidu.com/s/1jIHElyI
第七课时作业 静哥 by 2016.4.5~2016.4.10 [作业描述] 1.解释redis数据库是怎么扩容的? 2.用几句话描述sds结构和压缩列表 [作业-1:解释redis数据库是怎么扩容的] Redis数据库是使用字典作为底层实现的,对数据库的增删改查操作也是构建在对字典的操作之上.因此,redis数据库的扩容本质上就是字典的扩容. Redis数据库是使用字典作为底层实现的:而字典使用哈希表作为底层实现:哈希表则可以由多个哈希表节点构成:哈希表节点里保存字典中的一个键值对. 对哈
摘要 Redis是一款著名的key-value内存数据库软件,同时也是一款卓越的数据结构服务软件.它支持字符串.列表.哈希表.集合.有序集合五种数据结构类型,同时每种数据结构类型针对不同的应用场景又支持不同的编码方式.这篇文章主要介绍压缩列表编码,在理解压缩列表编码原理的基础上介绍Redis对压缩列表的应用,最后再对Redis压缩列表应用进行分析. 摘要 Redis是一款著名的key-value内存数据库软件,同时也是一款卓越的数据结构服务软件.它支持字符串.列表.哈希表.集合.有序集合五种数据
跳跃表事一种有序的结构,是有序集合键的底层实现 typedef struct zskiplistNode { // 后退指针 struct zskiplistNode *backward; // 分值 double score; // 成员对象 robj *obj; // 层 struct zskiplistLevel { // 前进指针 struct zskiplistNode *forward; // 跨度 unsigned int span; } level[]; } zskiplistN
压缩列表(ziplist)是列表键和哈希键的底层实现之一. 7.1 压缩列表的构成 压缩列表是Redis为了节约内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构.一个压缩列表可以包含任意多个节点(entry),每个节点可以保存数组或者一个整数值. 7.2 压缩列表节点的构成 每个压缩列表节点可以保存一个字节数组或者一个整数值. 每个压缩列表节点都由previous_entry_length.encoding.content三个部分组成. 7.2.1 pre