![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 87
Nickqiao
这个作者很懒,什么都没留下…
展开
-
Redis设计与实现——数据结构(一)
Redis一共有六种数据结构,分别是简单动态字符串,链表,字典,跳跃表,整数集合,压缩列表。简单动态字符串(SDS)当Redis需要的不仅仅是一个字面量,而是一个可以被修改的字符串值时,Redis就会使用SDS来表示字符串。包含字符串值的键值对在底层都是SDS实现的。sdshdr结构表示一个SDS值struct sdshdr { // 记录 buf 数组中已使用字节的数量 // 等于原创 2017-10-31 20:09:50 · 534 阅读 · 0 评论 -
Redis设计与实现——数据结构(二)
字典Redis 的数据库使用字典来作为底层实现,字典还是哈希键的底层实现之一: 当一个哈希键包含的键值对比较多, 又或者键值对中的元素都是比较长的字符串时, Redis 就会使用字典作为哈希键的底层实现。原创 2017-10-31 21:37:44 · 521 阅读 · 0 评论 -
Redis设计与实现——数据结构(三)
跳跃表跳跃表简介跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。跳跃表支持平均 O(log N) 最坏 O(N) 复杂度的节点查找, 还可以通过顺序性操作来批量处理节点。原创 2017-11-01 15:24:37 · 354 阅读 · 0 评论 -
Redis设计与实现——数据结构(四)
整数集合简介整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。实现每个 intset.h/intset 结构表示一个整数集合原创 2017-11-03 18:41:48 · 340 阅读 · 0 评论 -
Redis设计与实现——数据结构(五)
对象Redis 并没有直接使用之前的数据结构来实现键值对数据库, 而是基于这些数据结构创建了一个对象系统, 这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少一种我们前面所介绍的数据结构。除此之外, Redis 的对象系统还实现了基于引用计数技术的内存回收机制: 当程序不再使用某个对象的时候, 这个对象所占用的内存就会被自动释放;原创 2017-11-09 17:13:12 · 809 阅读 · 0 评论