关键代码位置:src/adlist.h



列表作为一种常用的数据结构,Redis也有,其数据结构含:



- 头节点、尾节点、节点值复制函数、节点值释放函数、节点值对比函数、链表长度记录、dup复制函数、free释放函数、match匹配函数



 



Redis列表数据结构_Redis

 



 



相关函数如下(随便看下就好了):



 



Redis列表数据结构_列表_02

 



Redis列表数据结构_redis源码解析_03

 



 



源码分析如下:

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;
 
x