
redis读书笔记
文章平均质量分 60
记录读书的点点滴滴
zhen_hong
没个性,不签名
展开
-
6、压缩列表
一、简介 压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。 比如: redis> rpush lst 1 3 5 10086 "hello" "world" (integer) 6 redis> OBJECT ENCODING lst ...原创 2020-04-02 19:44:29 · 1574 阅读 · 0 评论 -
5、整数集合
一、简介 整数集合(intset)是集合键的底层实现之一, 当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 比如: redis> SADD numbers 1 3 5 7 9 (integer) 5 redis> OBJECT ENCODING numbers "intset" 二、重点 2.1 结构体 typedef st...原创 2020-04-02 19:41:33 · 956 阅读 · 0 评论 -
4、跳跃表
一、简介 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代替平衡树。 Redis使用跳跃表作为有序集合键的...原创 2020-04-02 19:40:58 · 157 阅读 · 0 评论 -
3、字典
一、简介 Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。 1.1 结构体 1.1.1 字典 typedef struct dict { // 类型特定函数 dictType *type; // 私有数据 void *privdata; // 哈希表,通常使用ht[0],在re...原创 2020-04-02 19:39:55 · 108 阅读 · 0 评论 -
2、链表
一、简介 1.1 结构体 1.1.1 链表每个节点的结构体 typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value; } listNode; 可以看到这个节点有两个指针,一个prev...原创 2020-04-02 19:38:41 · 139 阅读 · 0 评论 -
1、redis的简单动态字符串
一、简介 1.1 结构体 struct sdshdr { //记录buf数组中已使用字节的数量 int len; //记录还未使用的长度 int free; //用于存放具体的字符串值 char buf[]; }; redis为什么要定义自己的字符串,而不是使用c自带的字符数组? 首先c自带的字符数组在获取其字符串的长度的时间复杂度是O(n),...原创 2020-04-02 19:36:14 · 166 阅读 · 0 评论