![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 79
大脸猫Coding
这个作者很懒,什么都没留下…
展开
-
【Redis数据结构与对象】整数集合(intset)
【Redis数据结构与对象】整数集合(intset)整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多,Redis就会使用整数集合作为集合键的底层实现。一、整数集合的实现整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,可以保存的类型有int16_t、int32_t、int64_t的整数值,保证集合中不会出现重复元素。在intset.h/intset数据结构如下:typedef struct intset {原创 2021-04-22 17:37:22 · 218 阅读 · 0 评论 -
【Redis数据结构与对象】跳跃表
【Redis数据结构与对象】跳跃表跳跃表是一种有序的数据结构,通过在每个结点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的结点查找,还可以通过顺序性操作在批量处理结点。在大部分情况下,跳跃表的效率可以和平衡树列斯,但是跳跃表的实现比平衡树更简单,所以很多程序使用了跳跃表来代替平衡树。Redis使用跳跃表来作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员(member)是比较长的字符串的时候,R原创 2021-04-22 17:35:52 · 119 阅读 · 0 评论 -
【Redis数据结构与对象】字典
【Redis数据结构与对象】字典字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。字典中,一个键(key)可以和一个值(value)进行关联(或者将键映射为值),这种关联的键和值就称为键值对。Redis使用C语言没有内置字典因此Redis自己实现了字典。字典在Redis中使用广泛,例如Redis的数据库就是用字典作为底层实现,对数据库的增删改查都是构建在对字典的操作之上的原创 2021-04-22 17:31:05 · 134 阅读 · 0 评论 -
【Redis数据结构与对象】Redis链表
【Redis数据结构与对象】链表1 链表功能链表提供了高效的节点重排能力,以及循序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。作为一种常用数据结构,链表内置在很多编程语言,Redis使用C语言没有内置链表数据结构,所以Redis构建了自己的链表实现。链表在Redis中应用广泛,例如列表键底层就是链表,列表键中包含了很多元素,或列表中包含的元素较长字符串,Redis会用链表作为列表键的底层实现(链表中每个节点保存一个整数值)。Redis中发布、订阅、慢查询、监视器等功能也用到链表,原创 2021-04-22 17:23:08 · 126 阅读 · 0 评论 -
【Redis 数据结构与对象】简单动态字符串SDS源码分析
【Redis 数据结构与对象】简单动态字符串SDS源码分析上篇讲到了SDS的原理,本文我们分析一下sds.h/sdshdr。sds相关的源码实现。1 sds构造函数/** sds构造函数* 输入参数:初始化字符串init 初始化字符串长度initlen* 返回值:创建成功返回对应的sds对应的buf 失败返回NULL* 时间复杂度T=O(N)*/sds sdsnewlen(const void *init, size_t initlen) { struct sdshdr *sh原创 2021-04-22 17:18:56 · 113 阅读 · 0 评论 -
【Redis 数据结构与对象】简单动态字符串SDS
【Redis 数据结构与对象】简单动态字符串SDS1、概述Redis没有直接使用C语言的传统字符串标识(以空字符结尾的字符数组),而是自己构建了一种简单动态字符串(simple dynamic string, SDS)的抽象类型,并且将SDS作为Redis的默认字符串。Redis中,C字符串只会用于保存字符串字面量,用于无需对字符串进行修改的地方,例如打印日志。redisLog(REDIS_WARNING, "Redis is now ready to exit....")当redis需要的不仅原创 2021-04-22 17:17:41 · 116 阅读 · 0 评论