欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis的跳跃表

程序员文章站 2024-03-17 18:54:58
...

跳跃表节点

typedef struct zskiplistNode {
	struct zskiplistLevel {
		struct zskiplistNode *forward;//前进指针
		unsigned int span;//跨度 用来计算排位
	} level[];//层(层高1~32随机,一般层数量越多,访问其他节点速度越快)
	struct zskiplistNode *backward;//后退指针 只能退至前一个节点
	double score;//分值 所有节点按分值从小到大排序
	robj *obj;//成员对象 各个节点保存的成员对象必须唯一,多个节点保存的分值可以相同,相同的按对象的字典序从小到大排
}zskiplistNode;

跳跃表

跳跃表是一种有序数据结构,通过在每个节点中维持多个指向其他节点的指针,达到快速访问节点的目的。在效率上,很多时候可以与平衡树相媲美。
Redis在实现有序集合键,以及在集群节点中用作内部数据结构中使用。

typedef struct zskiplist {//用来方便地对跳跃表进行处理
	struct zskiplistNode *header;//表头节点
	struct zskiplistNode *tail;//表尾节点
	unsigned long length;//表中节点的数量
	int level;//表中层数最大的节点的层数(表头节点不算在内)
}zskiplist;