redis源码跳跃表(zskiplist)
Posted bailuoxi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis源码跳跃表(zskiplist)相关的知识,希望对你有一定的参考价值。
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)的主要内容,如果未能解决你的问题,请参考以下文章