摘要: 前面几篇文章,我们一起学习了redis用到的所有主要数据结构,比如简单动态字符串(sds)、双端链表、字典、压缩列表、整数集合等等。 redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五 阅读全文
posted @ 2020-04-24 16:00 名字可以起这么长 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 整数集合 整数集合(intset)是集合键的底层实现之一,当一个集合只包含 整数值元素,并且这个集合的元素数量不多时,Redis就会使用郑书记和作为集合键的底层实现。 整数集合的实现 整数集合是redis用于保存整数值的集合抽象数据结构,它可以可以保存类型位int16_t、int32_t、int64 阅读全文
posted @ 2020-04-24 15:52 名字可以起这么长 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种用于保存键值对的抽象数据结构。 字典经常作为一种数据结构内置在很多高级编程语言里面,但redis所使用的C语言并没有内置这种数据结构,因此Redis构建了自己的字典实现。 字典在re 阅读全文
posted @ 2020-04-24 15:38 名字可以起这么长 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 跳跃表(skipList)简介 跳跃表(skipList)是一种有序数据结构,他通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持评价O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 在大部分情况下,跳跃表的效率可以和平衡树相媲美, 阅读全文
posted @ 2020-04-24 15:12 名字可以起这么长 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 链表简介 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地跳转链表的长度。 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。 链表在Redis中的应用非常多,比如列表键的底 阅读全文
posted @ 2020-04-24 00:09 名字可以起这么长 阅读(175) 评论(0) 推荐(0) 编辑