《Redis设计与实现》第三章总结:链表

2.链表

C语言没有实现链表,因此Redis自己实现了一套

列表(list)键的底层实现之一就是链表,当一个列表键包含了较多元素,或元素都是比较长的字符串,则会使用链表作为列表键的底层实现,如integers列表键,链表中的每个节点都保存了一个整数值
发布与订阅、慢查询、监视器等也用到了链表

2.1 实现

链表节点(adlist.h/listNode)表示如图:
《Redis设计与实现》第三章总结:链表_第1张图片

由list(adlist.h/list)来组成链表,表示如图:
《Redis设计与实现》第三章总结:链表_第2张图片

可以看到,list还包含了几个用于实现多态链表所需的类型特定函数,因为listNode中的value类型为void指针,且使用dup、free、match三个方法(参数都是void)为节点值设置类型特定函数,,因此可以保存不同类型的值,
方法具体作用如下图:
在这里插入图片描述

链表示例如图:
《Redis设计与实现》第三章总结:链表_第3张图片

2.2 特性

《Redis设计与实现》第三章总结:链表_第4张图片

你可能感兴趣的:(Redis,Redis)