Redis源码研究--跳表

时间:2023-03-09 02:16:45
Redis源码研究--跳表

-------------6月29日--------------------

简单看了下跳表这一数据结构,理解起来很真实,效率可以和红黑树相比。我就喜欢这样的。

 typedef struct zskiplist {
struct zskiplistNode *header, *tail;
unsigned long length;
int level;
} zskiplist;

跳表包括头、尾、长度、层数。

 typedef struct zskiplistNode {
robj *obj;
double score;
struct zskiplistNode *backward;
struct zskiplistLevel {
struct zskiplistNode *forward;
unsigned int span;
} level[];
} zskiplistNode;

一个指针指向左边的,指向右边的有多个。

-----------------------6月30日--------------

 typedef struct zset {
dict *dict;
zskiplist *zsl;
} zset;

-------------------7月2日--------------------

跳表在Redis中的唯一应用是zset。用的多的数据结构还是sds和dict。