定义
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,这样可以最大限度减少内存碎片