美文网首页
redis底层数据结构 - skiplist跳表

redis底层数据结构 - skiplist跳表

作者: 沐兮_d64c | 来源:发表于2019-07-25 22:10 被阅读0次

1,skillist跳表

1)zskipListNode和zskiplist定义

image.png
2)zskiplist跳表结构保存跳跃表信息,表头、表尾、长度、最大层数
header:表头节点
tail:表尾节点
level:最大层数
length:跳表节点数量
3)zskiplistNode跳表节点每个节点层高1~32随机数
ele:sds字符串对象,保存节点的member成员,唯一的。
score:double类型的分数,从小到大排序。score相同,按照ele的字典顺序排序。
backward:后退指针,节点的prev节点,用于表尾向表头遍历。
level数组:每个元素都包含一个forward前进指针和span跨度。
forward:前进指针,每一层都有指向表尾方向的前进指针,用于实现多层链表。
span:跨度,记录两个节点之间的距离,用于计算rank排名。

2,zset底层跳表实现

1)zset底层使用字典和跳跃表。字典和跳跃表通过指针共享score和member,不会造成任何数据重复。
2)dict保存member-score的映射,用于查找member的分数。
skiplist:用户执行范围操作。
3)zset底层使用dict + zskiplist实现

image.png

相关文章

  • redis系列(一):数据结构综述

    底层的数据结构 简单动态字符串 SDS 链表 list 跳表 skiplist 压缩列表 ziplist 快速列表...

  • 2.跳表的基本实现和特性

    一、跳表 跳表的设计与实现为啥 redis 使用跳表(skiplist)而不是使用 red-black redis...

  • redis底层数据结构 - skiplist跳表

    1,skillist跳表 1)zskipListNode和zskiplist定义image.png2)zskipl...

  • HBase内存管理之MemStore

    基于跳表实现的MemStore基础模型 实现MemStore模型的数据结构是SkipList(跳表),跳表可以实现...

  • 定时器实现 & 红黑树,跳表

    跳表:是为一个有序的链表建立多级索引的数据结构叫做跳表。redis中zset数据量大时底层数据结构使用跳表。 re...

  • redis源码之zset结构的实现

    zset为有序的,自动去重的集合数据类型,zset数据结构底层实现为字典(dict)+跳表(skiplist)当数...

  • Redis:跳表SkipList

    原文链接:SkipList 跳表 为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay...

  • Redis对象(一) - 类型和编码

    对象 前边学习了Redis底层实现的各种数据结构, 包括SDS, list, skiplist, dict, in...

  • 跳表

    参考资料 Redis为什么用跳表而不用平衡树? skiplist与平衡树、哈希表的比较 skiplist和各种平衡...

  • LevelDB 中的跳表实现

    何为跳表 跳跃表(skiplist),简称「跳表」。是一种在链表基础上进行优化的数据结构,最早由 William ...

网友评论

      本文标题:redis底层数据结构 - skiplist跳表

      本文链接:https://www.haomeiwen.com/subject/xvdcqctx.html