Redis源码研究--跳表

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

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

1 typedef struct zskiplist {
2     struct zskiplistNode *header, *tail;
3     unsigned long length;
4     int level;
5 } zskiplist;

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

1 typedef struct zskiplistNode {
2     robj *obj;
3     double score;
4     struct zskiplistNode *backward;
5     struct zskiplistLevel {
6         struct zskiplistNode *forward;
7         unsigned int span;
8     } level[];
9 } zskiplistNode;

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

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

1 typedef struct zset {
2     dict *dict;
3     zskiplist *zsl;
4 } zset;

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

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

 

 

posted on 2013-06-30 23:51  feiyunruyue  阅读(225)  评论(0编辑  收藏  举报

导航