Redis---skipList(跳跃列表)

1. 概述

  跳跃表是一种有序的数据结构, 他通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的.

  大部分情况下, 跳跃表的效率可以和平衡树相媲美.

  Redis中只在两处用到了跳跃表, 一个是实现有序集合, 另一个是 集群节点中国用作内部数据结构.

2. 基本结构

typedef struct zskiplistNode {
    sds ele; //
    double score; // 分值
    struct zskiplistNode *backward; // 后退指针
    struct zskiplistLevel {
        struct zskiplistNode *forward; // 前进指针
        unsigned long span; // 跨度
    } level[]; // 多层连接指针
} zskiplistNode;

typedef struct zskiplist {
    struct zskiplistNode *header, *tail; // 头节点 尾节点
    unsigned long length; // 节点个数
    int level; // 最高层数
} zskiplist;

typedef struct zset {
    dict *dict; // 字典
    zskiplist *zsl; // 跳跃表
} zset;

猜你喜欢

转载自www.cnblogs.com/virgosnail/p/9543302.html