![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 80
fainionchen
这个作者很懒,什么都没留下…
展开
-
Redis数据结构——SDS(简单动态字符串)
Redis中所有字符串都是用SDS(简单动态字符串)实现的,该结构体内部定义如下:struct sdshdr{ int len; //buf已用字节数 int free; //buf未用字节数 char buf[];};关于SDS的特点,可以总结为以下几点:1. SDS遵循C字符串以空字符结尾的风格,兼容部分C字符串函数,buf在末尾默认会带上一...原创 2018-10-06 22:20:13 · 189 阅读 · 0 评论 -
Redis数据结构——list(链表)
Redis使用的链表跟我们常见的链表差不多,其节点定义如下:typedef struct listNode { struct listNode* prev; struct listNode* next; void* value;}listNode;完整的链表定义如下:typedef struct list { listNode* head; ...原创 2018-10-07 12:50:11 · 261 阅读 · 0 评论 -
Redis数据结构——dict(字典)
字典在Redis中的作用是非常巨大的,对Redis数据库的增删改查等操作都构建在对字典的操作之上,因此,了解字典的底层实现能让我们对Redis有更深的理解。下面分4个模块讲解Redis的字典实现(基本所有实现细节和重点都会谈到): 一、字典的应用场景在Redis中,跟字典有关的命令主要有HLEN、HGETALL等 二、字典的数据结构Redis的字典是用哈希表实现的,一个哈希...原创 2018-10-09 02:22:36 · 5400 阅读 · 7 评论 -
Redis数据结构——skiplist(跳跃表)
跳跃表在Redis中主要用于有序集合键的实现,其他地方没怎么用到,但是这种数据结构在面试的时候经常会问到,因为它作为一种查找时间复杂度为O(logN)的特殊的链表,效率堪比红黑树或平衡树,而实现难度却远小于它们。下面分3个模块讲解Redis的跳跃表实现: 一、跳跃表的应用场景在Redis中,当有序集合包含的元素数量较多,或者有序集合中元素的成员是比较长的字符串时,就会使用跳跃表做有序集...原创 2018-10-10 02:46:33 · 539 阅读 · 0 评论 -
Redis数据结构——intset(整数集合)
整数集合是redis集合键的底层实现之一,如果一个集合只包含整数值元素,而且元素数量不多,redis就会用整数集合作为集合键的底层实现(redis集合键的另一种底层实现是跳表)。 一、整数集合的应用场景跟整数集合intset相关的redis命令主要有ZADD、SADD等等 二、整数集合的数据结构typedef struct intset { uint32_t en...原创 2018-11-27 01:50:15 · 395 阅读 · 0 评论