源码阅读

伤心桥下春波绿,曾是惊鸿照影来。

Redis跳表中每个节点的span实际上是个非常巧妙的设计,但是关于span的部分阅读起来不是很容易,因为这种在数据结构上做的创新行为往往不能第一眼就理解。在跳表的插入删除操作,可以看到有很多部分都在对span进行调整,span是一个重要...

发布 0 条评论

下面进入跳表的具体实现,以下代码位于z_set.c 先忽略插入与删除中对span相关的调整操作,下一篇会专门对span进行解释后再继续跳表的后续剖析 以下是两个基本的创建函数 创建一个跳表节点,不多说 创建整个跳表。设置跳表的初始最...

发布 0 条评论

从跳表(SkipList)开始,离Redis用户层面就比较近了,Redis用户层面的五个基本数据类型中有序集合zset的实现主要基于三个部分:跳表、dict、ziplist。三者搭配的很完美,其中dict我们已经研究过,至于ziplist则是压缩列表,关于zipli...

发布 0 条评论

上一篇我们熟悉了SDS字符串的基本结构以及一些基本方法,我们接下来继续深入看一些方法比较重要的方法,别忘了我们的目的是为了找出SDS到底比glibc的字符串好在哪儿。 以下代码位于sds.c 首先说明一下这个工具函数,该函数会根据参...

发布 0 条评论

前言 SDS是一个C的动态字符串库,即 redis抛弃了glibc的字符串库,自己实现了一个更好的字符串库,为什么要造这个轮子,SDS比起glibc的一套更好在哪儿?这就是我们要探究的核心问题。(以下代码位于sds.h) SDS字符串的类型很简单 ...

发布 0 条评论