跳跃表,是一种有序数据结构,通过在每个节点中保存多个指向其他节点的指针,从而达到快速访问节点的目的。
在Redis中的应用:
作为有序集合的底层实现。在集群节点中用作内部数据结构。redis.h/zskiplistNode
typedef struct zskiplistNode { // 后退指针 struct zskiplistNode *backward; // 分值 double score; // 成员对象 robj *obj; // 层 struct zskiplistLevel { // 前进指针 struct zskiplistNode *forward; // 跨度 unsigned int span; } level[]; } zskiplistNode;redis.h/zskiplist
typedef struct zskiplist { // 表头节点和表尾节点 structz skiplistNode *header, *tail; // 表中节点数量 unsigned long length; // 层数 int level; } zskiplist;