Redis 数据结构之链表

一 使用场景

Redis 的发布与订阅,慢查询,监视器等功能也用到了链表,Redis服务器自己使用链表保存多个客户端的状态信息,以及使用链表来构建客户端输出缓冲区。服务器

 二 链表节点的数据结构

    

  l链表节点的数据结构定义   数据结构

 struct listNode{函数

         listNode *prev;spa

         listNode *next;指针

         void *value;  im

 }链表

 三 Redis链表的数据结构      

 

数据结构定义以下next

  struct list{数据

  listNode *head;客户端

  listNode * tail;

  unsigned long len;  // 链表所包含节点的数量

  void (*free)(void *ptr)  // 节点释放函数

  void *(*dup)(void *ptr)  // 节点复制函数

  int (*match)(void *ptr,void *key)  // 节点值对比函数

}

四 特色

   双端:获取某个节点的前置节点和后置节点的时间复杂度都是O(1)

   无环:表头节点的prev指针和表尾节点都指向null

   获取表头节点和表尾节点的时间复杂度都为O(1)

   获取节点的数量能够经过len,时间复杂度都为O(1)

相关文章
相关标签/搜索