В redis.h
, то skipnode определяется следующим образом:Что означает переменная skiplistnode "span" в redis.h?
typedef struct zskiplistNode {
robj *obj;
double score;
struct zskiplistNode *backward;
struct zskiplistLevel {
struct zskiplistNode *forward;
unsigned int span;
} level[];
} zskiplistNode;
Что делает вар span
значит? Что этот магазин хранит?
ваш anwer отлично ~~~ большое спасибо ~~~ Но я считаю, что skiplist можно заменить красно-черным деревом или splay-tree, которые, возможно, имеют более высокую производительность. – kaitian521
Нет, не может. Список пропусков предлагает одно интересное свойство, которое нет в деревьях RB или деревьях. Он может найти n-й элемент при стоимости log (n). Используется, например, ZRANGE. –
Я думаю, что дерево splay также может найти n-й элемент при log (n) стоимости с дополнительным элементом в узле. но splay тратить больше времени, чтобы писать и читать основную память, которая не так удобна для redis, как я думаю. – kaitian521