In redis.h
,skipnode定义如下:
typedef struct zskiplistNode {
robj *obj;
double score;
struct zskiplistNode *backward;
struct zskiplistLevel {
struct zskiplistNode *forward;
unsigned int span;
} level[];
} zskiplistNode;
var 是什么意思span
意思是?这个 var 存储什么?
span
at a特定节点存储当前节点和当前级别的node->forward之间的节点数。span
用于计算跳跃列表中元素从 1 开始的排名。
For example, consider the following skip list :
考虑头节点。所有级别的跨度均为 1。
考虑节点 1。在级别 0,跨度为 1,因为您将span如果跟随前向指针,则为 1 个元素。在级别 1,跨度为 2,因为您将span如果跟随前向指针,则有 2 个元素(节点 2 和节点 3)。
看看t_zet.c 中的函数 zslGetRank https://github.com/antirez/redis/blob/unstable/src/t_zset.c#L320。您可以看到如何根据每个级别的跨度值计算排名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)