redis设计与实现
YinXinLion
这个作者很懒,什么都没留下…
展开
-
Redis之字典
字典介绍字典,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构, Redis使用的C语言并没有内置这种数据结构,因此自己构建字典的实现。 Redis对数据库的增删改查也是构建在字典的操作之上的。redis> SET msg "hello workd" //在数据库中创建 //键为"msg" 值为"hello world"的键值对字典只是 哈希键 的底层实现之一。 当一个哈希键包原创 2017-04-29 19:04:16 · 537 阅读 · 0 评论 -
Redis之简单动态字符串
SDS的介绍Redis中字符串并没有使用C语言传统的字符串,而是构建了一种名为简单动态字符串(SDS),SDS是Redis的默认字符串标识。 Redis里面的C语言字符串用在一些无需对字符串值进行修改的地方,例如打印日志redisLog(REDIS_WARNING,"redis is now ready to exit"); 当Redis需要的是可以被修改的字符串值时,使用SDS来表示字符串值re原创 2017-04-28 22:55:30 · 733 阅读 · 0 评论 -
Redis之链表
链表的介绍链表提供高效的节点重排能力,以及顺序性的节点访问方式,并通过增删节点来灵活调整链表长度。链表在Redis中的应用,例如,列表键的底层实现之一是链表。(当列表键包含的数量比较多的元素,或者包含的元素逗比比较长的字符串时,Redis就会使用链表作为列表键的底层实现)redis>LLEN integers (integer)1024 redis>LRANGE integers 0 10 //从原创 2017-04-29 09:44:04 · 682 阅读 · 0 评论 -
Redis之跳跃表
跳跃表的介绍跳跃表(SkipList)是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可通过顺序性操作来批量处理节点。跳跃表用在哪里?Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素比较多,或者元素的成员是比较长的字符串时,Redis使用跳跃表来作为有序集合键的底原创 2017-04-30 22:45:38 · 483 阅读 · 0 评论 -
Reids之整数集合
整数集合介绍整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素不多时,Redis就会使用整数集合作为集合键的底层实现。 整数集合的实现保存整数值得集合抽象数据集合,保证集合中不会出现重复元素。typedef struct intset{ //编码方式 uint32_t encoding; //集合包含的元素数量 uint3原创 2017-05-11 16:44:29 · 231 阅读 · 0 评论 -
Redis之对象
概念Redis的主要数据结构有简单动态字符串sds,双端链表,字典,整数集合等等。Redis并不是直接用这些数据集合来实现键值对数据可,而是基于这些数据结构创建了一个对象系统,这个系统包含(字符串对象、列表对象、哈希对象、集合对象和有序集合对象)。对象的类型Redis使用对象来表示数据库中的键和值,每次创建一个键值对时,我们至少会创建两个对象,一个对象用作键值对的键,一个对象用作键值对的值。 对原创 2017-05-27 18:13:35 · 320 阅读 · 0 评论