
redis
耿小渣
这个作者很懒,什么都没留下…
展开
-
redis 源码分析--整数集合
简介 整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 实现 typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // 保存元素的数组 ...原创 2020-04-18 17:31:42 · 207 阅读 · 0 评论 -
redis 源码分析--跳跃表
简介 跳跃表(skiplist)是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 Redis只在两个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群节点中用作内部数据结构。 定义 typedef struct redisObject { ...原创 2020-04-08 14:57:10 · 248 阅读 · 0 评论 -
redis 源码分析--字典
简介 字典,又称为符号表(symbol table)、关联数组(associative array)或者映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。 Redis 的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。 实现 /* * 哈希表节点 */ typedef struct...原创 2020-04-03 11:06:44 · 209 阅读 · 0 评论 -
redis 源码分析--链表
简介 链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量表较多的元素,又或列表中包含的元素都是比较长的字符串时,Redis就会用链表作为列表键的底层实现。 ...原创 2020-04-01 16:11:33 · 183 阅读 · 0 评论 -
redis 源码分析--字符串
简介 Redis虽然是由C语言实现的,但是Redis没有直接使用C语言传统的字符串表示,而是构建了一种名为简单动态字符串(simple dynamic string, SDS) 的抽象类型,并将SDS用作Redis的默认字符串表示。 SDS 定义 sds 和 sdshdr 在sds.h头文件中定义是这样的 /* * 最大预分配长度 */ #define SDS_MAX_PREALLO...原创 2020-03-08 23:36:55 · 190 阅读 · 0 评论