Redis数据结构——链表list

链表是一种常用的数据结构,提供了顺序访问的方式,而且高效地增删操作。

Redis中广泛使用了链表,例如:列表的底层实现之一就是链表。

在Redis中,链表分为两部分:链表信息 + 链表节点。

  • 链表节点用来表示链表中的一个节点,基础的值和指向前和后的指针
  • 链表信息,用来保存整个链表的信息,例如首尾节点、节点数量

先来说链表节点,就是我们最常见的链表节点的结构:

c 复制代码
typeof struct listNode{
	// 前驱节点
	struct listNode *prev;
	// 后继节点
	struct listNode *next;
	
	// 节点的值
	void *value; 
}listNode; 

通过链表节点中的prev和next组成双向链表。

而链表这个结构体中保存了整个链表的信息

c 复制代码
typeof struct list{
	listNode *head; // 表头节点
	
	listNode *tail; // 表尾节点
	
	unsigned long len; // 链表节点数量
	// 接下来就是一些链表操作的API 
	// 节点复制 ...
	// 节点释放 ...
	// 节点比较 ... 
}list; 

Redis中的链表并没有什么特殊之处,总结一下特点:

  • 双端操作,链表信息list中保存了首尾节点
  • 无环,head的prev始终为null,tail的next始终为null
  • O(1)获取链表节点数量
  • 多态:链表节点中通过void*来保存节点值,节点值可以是任意类型。

参考文章

相关推荐
天疆说11 小时前
01 硬件选型与 llama.cpp 部署:4× RTX 5880 Ada 跑 DeepSeek-V4-Flash
java·redis·llama
嘟嘟071712 小时前
Next.js 博客左侧笔记列表是怎么从 Redis 渲染出来的?从组件、children 到动态路由一次讲清
redis·react.js·前端工程化
wuyk55512 小时前
3.链表:用指针串联的动态数据结构
c语言·开发语言·数据结构·链表
郝学胜-神的一滴12 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
疯狂打码的少年13 小时前
【数据结构】二叉树的性质(五大性质+计算)
数据结构·笔记·算法
wabs66613 小时前
关于图论【A*算法 | 卡码网127.骑士的攻击的思考】
数据结构·算法·图论·卡码网·广搜的改进版
凉茶钱13 小时前
【数据结构】堆的应用
c语言·数据结构
Rain的Java大神之路14 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
间歇性努力持续性发呆的野生快乐选手15 小时前
栈的性质(进栈,出栈,访问)
数据结构·c++
m0_5474866615 小时前
《数据结构与算法》全套PPT课件2026(中国海洋大学)
数据结构·算法