redis 数据结构与对象-链表

Redis利用链表实现列表键、发布订阅、慢查询和监视器等功能,具备高效的操作性能,如常数时间复杂度获取节点及长度。链表结构包括头节点、尾节点和节点值操作函数,支持动态扩展,最大存储长度受限于unsigned long类型。
摘要由CSDN通过智能技术生成
先按照redis设计与实现原话介绍一下链表在redis中都实现了什么
1、当list列表键数据内容比较多,或者节点比较多就会使用链表实现底层
2、发布订阅功能
3、慢查询
4、监视器等
列表一些特性
1、获取某个节点的前置、后置节点的时间复杂度都是0(1)
2、获取链表的头节点和尾节点的时间复杂度同样是0(1)
3、获取列表长度的时间复杂度同样是0(1)
4、因为unsigned long的关系,最大存储list长度为大概40亿以后在很多地方都会看到这个值
链表的数据结构
typedef struct list {
	listNode * head;					// 表头结点
	listNode * tail;					// 表尾节点
	unsigned long len;					// 链表包含的节点数量
	void *(*dup)(void *ptr);			// 节点值赋值函数
	void (*free)(void *ptr);			// 节点值释放函数
	int (*match)(void *ptr, void *key);	// 节点值对比函数
} list;
typedef struct listNode {
	struct listNode *prew;   // 前置节点
	struct listNode *next;   // 后置节点
	void *value;             // 节点的值
}listNode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值