Redis
文章平均质量分 86
Redis设计与实现 以及Redis的使用
Angel_CG
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis源码分析--- 对象
Redis源码分析--- 对象前边陆续介绍了Redis用到了所有的主要数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等等。Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象,每个对象都用到了至少一种前边介绍的数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令,适用对象的另一个好处是,我们可以针对不同的使用场景,为对象设置多种不同的数据结构实现,从而优化对象在不同场原创 2021-04-23 16:24:34 · 195 阅读 · 0 评论 -
Redis源码分析--- 压缩列表
Redis源码分析--- 压缩列表压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。列表里面包含的都是1、3、5、10086这样的小整数值,以及‘hello’、‘world’这样的短字符串。另外当一个哈希键只包含少量键值对,并且每个键值对的键和值要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做哈希键的底层实现。.原创 2021-04-23 16:21:19 · 269 阅读 · 0 评论 -
Redis 源码分析--- 整数 集合
Redis 源码分析--- 整数 集合整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。举个例子,如果我们创建一个只包含五个元素的集合键,并且集合中所有元素都是整数值,那么这个集合键的底层实现就会是整数集合: 整数集合的实现整数集合是Redis用于保存整数的值的集合抽象数据结构,它可以保存类型为int16_t、int32_t、或者int64_t的整数值,并且保证集合中不会出现重复元素。每个int..原创 2021-04-23 16:20:10 · 146 阅读 · 0 评论 -
Reids源码分析--- 跳跃表
Reids源码分析--- 跳跃表跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树相媲美,并未因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都适用跳跃表来代替平衡树。Redis使用跳跃表作为有序集合的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Re原创 2021-04-23 16:19:03 · 167 阅读 · 0 评论 -
Redis源码分析--- 字典
Redis源码分析--- 字典字典又称为符号表(symbol table)、关联数组(assocoative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键值映射为值),这些关联的键和值就称为键值对。字典中每个键值都是独一无二的,程序可以在字典中根据键值查找与之关联的值,或者通过键来更新,又或者根据键来删除整个键值对,等等。字典经常作为一种数据结构内置在很多高级编程语言原创 2021-04-23 16:17:44 · 304 阅读 · 0 评论 -
Redis源码分析--- 链表
Redis源码分析--- 链表链表提供了高效的节点排重能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表长度。作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis就会使用链表作为列表键的底层实现。integer列表键值的底层实现就原创 2021-04-23 16:14:21 · 146 阅读 · 0 评论 -
Redis源码分析--- String
Redis源码分析--- String 简单动态字符串(simple dynamic string,SDS),它和C字符串不一样,C字符串只会作为字符串字面变量用在一些无须对字符串值进行修改的地方,比如打印日志的地方。 当Redis需要的不仅仅是一个字符串字面变量,而是一个可以被修改的字符串值时,Redis就会使用SDS来表示字符串值,比如在Redis的数据库里面,包含字符串值的键值对在底层都是由SDS来实现的。 SDS的定义每个sds.h/sdshdr结构表示一个SDS值:...原创 2021-04-23 16:11:44 · 284 阅读 · 0 评论
分享