1.介绍
2.源码
跳表节点:
/* ZSETs use a specialized version of Skiplists */
/*** @brief 定义跳跃表节点的数据结构。* * 该结构体用于表示跳跃表中的一个节点,包含元素、分数、后向指针和多层链表信息。*/
typedef struct zskiplistNode {sds ele; /* 存储节点代表的元素,通常是有序集合中的成员名称。 */double score; /* 存储元素对应的分数,用于节点排序。 */struct zskiplistNode *backward; /* 指向前一个节点的指针,用于双向遍历。 *//*** @brief 定义跳跃表的每一层。* * 该结构体表示跳跃表的一层,包含指向下一个节点的指针和跨越的节点数。*/struct zskiplistLevel {struct zskiplistNode *forward; /* 指向下一个节点的指针,用于在当前层中向前遍历。 */unsigned long span; /* 表示从当前节点到 forward 指针所指向的节点之间跨越的节点数。 */} level[]; /* 柔性数组,存储跳跃表的每一层信息。 */
} zskiplistNode;
跳表:
typedef struct zskiplist {struct zskiplistNode *header, *tail;unsigned long length;int level;
} zskiplist;
zset存储结构:
typedef struct zset {dict *dict;zskiplist *zsl;
} zset;