《Redis设计与实现》第5章 跳跃表

Redis使用跳跃表(skiplist)作为有序集合键的底层实现,提供平均O(logN)、最坏O(N)的查找效率。跳跃表比平衡树实现简单,效率与之相当。Redis的跳跃表由zskiplistNode和zskiplist结构定义,其中zskiplistNode表示节点,包含分值、成员对象和多层前进指针,用于快速访问。zskiplist结构保存节点信息,如表头、表尾指针和长度。跳跃表支持快速定位表头、表尾节点,节点按分值和成员对象字典序排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

第5章 跳跃表

5.1 跳跃表的实现

5.2 跳跃表API

5.3 重点回顾


第5章 跳跃表

跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。

跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。

在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代替平衡树。

Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员(member)是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现。

举个例子,fruit-price是一个有序集合键,这个有序集合以水果名为成员,水果价钱为分值,保存了130款水果的价钱:



redis> ZRANGE fruit-price 0 2 WITHSCORES
1)"banana"
2)"5"
3)"cherry"
4)"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值