码迷,mamicode.com
首页 > 其他好文 > 详细

redis源码(五)跳跃表(zskiplist)

时间:2019-10-08 18:49:45      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:增加   style   str   evel   完成   多个   nbsp   image   header   

1、跳跃表
  redis使用跳跃表在两个地方:实现有序集合键?集群节点中用作内部数据结构?
  一种有序的数据结构,在每个节点维护多个指向后续节点的指针,完成快速访问后续节点的功能,即就是链表增加了多级索引

技术图片

 

 

Redis的跳跃表由如下:两个结构定义,其中 zskiplistNode结构用于表示跳跃表节点,而 zskiplist结构则用于保存跳跃表节点的相关信息,比如节点的数量,以及指向表头节点和表尾节点的指针等等

typedef struct zskiplistNode {
    robj *obj;
    double score;
    struct zskiplistNode *backward;
    struct zskiplistLevel {
        struct zskiplistNode *forward;
        unsigned int span;
    } level[];
} zskiplistNode;

typedef struct zskiplist {
    struct zskiplistNode *header, *tail;          //分别指向跳跃表的表头节点、表尾节点
    unsigned long length;                         //跳跃表的个数
    int level;                                    //跳跃表中所有节点的最大层数(表头节点的层数不计算在内)
} zskiplist;

 

redis源码(五)跳跃表(zskiplist)

标签:增加   style   str   evel   完成   多个   nbsp   image   header   

原文地址:https://www.cnblogs.com/bailuoxi/p/11637058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!