Redis链表
-
C语言没有内置链表,Redis自己构建的链表
-
链表在redis中的实现
-
typedef struct list { //表头节点 listNode *head; //表尾节点 listNode *tail; //节点数量 unsigned long len; //节点值复制函数 void *(*dup) (void *ptr); //节点值释放函数 void (*free) (void *ptr); //节点值赋值函数 int (*match) (void *ptr, void *key); } list;
-
节点的实现:
-
typedef struct listNode { //前置节点 struct listNode *prev; //后置节点 struct listNode *next; //节点值 void *value; }listNode;
-
Redis链表实现的特性:
- 双端
- 无环:表头结点的prev和next都指向null,对链表的访问以null为终点
- 带有表头指针和表尾指针
- 带有链表长度计时器len
- 多态:链表节点用void*指针来保存值,可以存任意类型的值