底层数据结构-zskiplist
-
跳表
-
一般只用于有序集合ZSet,定义在server.h
-
结构定义
##单个节点 typedef struct zskiplistNode { sds ele; double score; struct zskiplistNode *backward; struct zskiplistLevel { struct zskiplistNode *forward; unsigned int span; } level[] } zskiplistNode;- 字段解释
ele表示持有的数据score表示节点的分数,用作升序排列存储的依据backward表示后面一个紧邻节点level是一个数组,可以挂上一堆节点,用来跳跃forward表示前面能看到的某个跳跃节点span表示跳跃节点与当前的距离,紧邻的话定义为1
##整个跳表 typedef struct zskiplist { struct zskiplistNode *header, *tail; unsigned log length; int level; } zskiplist;- header头节点不持有任何数据,ele为null,但是level的长度为最大的32
- 字段解释