【Redis笔记】数据结构与对象:链表

链表在Redis中的应用:

列表键的底层实现之一是链表;

发布与订阅,慢查询,监视器等功能也用到了链表;

Redis服务器本身使用链表保存多个客户端的状态信息;

使用链表来构建客户端输出缓冲区;

链表和链表节点的实现:

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 * ptr);//节点值复制函数
  void (*free)(void *ptr);//节点值释放函数
  int (*match)(void *ptr,void *key);//节点值对比函数
}

Redis中的链表特性:

带表头指针和表尾指针的双端无环链表,可以O(1)获取链表长度。

多态:链表节点使用void *指针来保存节点值,并且可以通过list结构的dup,free,match三个属性为节点值设置类型特定函数,所以链表可以用于保存各种不同类型的值。

猜你喜欢

转载自blog.csdn.net/m0_52043808/article/details/124261615
今日推荐