Redis 链表

Redis的列表(List)底层实现之一由链表实现,当一个列表包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis使用链表做为列表的底层实现。函数

 

除了列表外,发布订阅、慢查询、监视器等功能都用到了链表。code

 

链表Node结构源代码,adlist.h/listNode:字符串

typedef struct listNode {

  //前置节点
  struct listNode *prev;

  //后置节点
  struct listNode *next;

  //节点值
  void *value;
} listNode;

adlist.h/list源代码:class

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;
  • dup函数用于复制链表节点所保存的值
  • free函数用于释放链表节点锁保存的值
  • match函数用于对比链表节点所保存的值和另外一个输入值是否相等
相关文章
相关标签/搜索