美文网首页
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底层数据结构 - skiplist跳表

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