Redis的链表底层结构

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42331540/article/details/84953655

主要构成:list结构+listNode结构,Redis链表的特性也是和这两个结构及其各个的属相字段相关的。

listNode结构

list结构

虽然多个listNode节点就可以连成链表,但是引入list结构后,操作活更加的方便,所有redis的链表一般是如下图所示:

从上面的链表结构图,我们可以轻易的总结出链表的特点

1:双端。listNode节点之间是一个双向链表,即每一个节点都有next和pre指针,这样就可以将获取某个节点的前驱或者后继值的复杂度降为O(1)。

2:list结构中含有head和tail指针,这样对链表头节点和尾节点的获取的时间复杂度为O(1)。

3:list结构中含有len,这样对链长度的获取的时间复杂度为O(1)。(有点类似于sds中获取长度)

4:无环。即不是循环的。这样对链表的遍历的中止条件是以NULL中止。注意和循环双向链表的区别。

5:多态:list结构含有三个特定函数,执行对应的特定操作。

猜你喜欢

转载自blog.csdn.net/weixin_42331540/article/details/84953655
今日推荐