redis3.0.7源码阅读(四)redis双端链表


版本:3.0.7


1.源文件
adlist.h
adlist.c

2.双端链表数据结构
/*
 * 双端链表节点
 */
typedef struct listNode {
    // 前节点
    struct listNode *prev;
    
    // 后节点
    struct listNode *next;
    
    // 节点值
    void *value;
} listNode;

/*
 * 双端链表迭代器
 */
typedef struct listIter {
    // 当前迭代到的节点
    listNode *next;
    
    // 迭代的方向
    int direction;
} listIter;

/*
 * 双端链表
 */
typedef struct list {

    // 链表头
    listNode *head;
    
    // 链表尾
    listNode *tail;

    // 节点值复制函数
    void *(*dup)(void *ptr);

    // 节点值释放函数
    void (*free)(void *ptr);

    // 节点值对比函数
    int (*match)(void *ptr, void *key);

    // 节点数量
    unsigned long len;
} list;

3.空间分布

redis3.0.7源码阅读(四)redis双端链表_第1张图片


4.一些特性
4.1 没什么特性,就是一个双端队列

原文出自:http://blog.csdn.net/daiyudong2020/article/details/54236545


End;

你可能感兴趣的:(redis)