定义
typedef struct ListNode {
struct ListNode *prev;
struct ListNode *next;
void *value;
} ListNode;
typedef struct List {
ListNode *head;
ListNode *tail;
unsigned long len;
void *(*dup)(void *prt);
void *(*free)(void *prt);
void *(*match)(void *prt, void *key);
}
可以看到,没有面向对象就只能用函数指针来实现method方法
特点
1,双向
2,无环
3,head, tail, len等快速查找等指针
4,通过函数指针来实现(不安全等)面向对象的多态
使用
1, list value
2,发布订阅(每个订阅者一个list)
3,慢查询,监视器
其实就是当作一个队列来用的
quicklist
redis 4.0引入了quick list,它是list 和ziplist的结合,list的节点就是ziplist,这样可以最大限度减少内存碎片