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