Redis源码解析——双向链表.docVIP

  • 1
  • 0
  • 约8.71千字
  • 约 8页
  • 2017-01-05 发布于辽宁
  • 举报
Redis源码解析——双向链表

Redis源码解析——双向链表 相对于之前介绍的字典和SDS字符串库,Redis的双向链表库则是非常标准的、教科书般简单的库。但是作为Redis源码的一部分,我决定还是要讲一讲的。 基本结构 首先我们看链表元素的结构。因为是双向链表,所以其基本元素应该有一个指向前一个节点的指针和一个指向后一个节点的指针,还有一个记录节点值的空间 [cpp] view plain copy 在CODE上查看代码片派生到我的代码片 typedef struct listNode { struct listNode *prev; struct listNode *next; void *value; } listNode; 因为双向链表不仅可以从头开始遍历,还可以从尾开始遍历,所以链表结构应该至少有头和尾两个节点的指针。 但是作为一个可以承载各种类型数据的链表,还需要链表使用者提供一些处理节点中数据的能力。因为这些数据可能是用户自定义的,所以像复制、删除、对比等操作都需要用户来告诉框架。在《Redis源码解析——字典结构》一文中,我们看到用户创建字典时需要传入的dictType结构体,就是一个承载数据的上述处理方法的载体。但是Redis在设计双向链表时则没有使用一个结构来承载这些方法,而是在链表结构中定义了 [c

文档评论(0)

1亿VIP精品文档

相关文档