软考、面试Redis知识点总结-3

一、Redis的跳表数据结构介绍

1. 什么是跳表

跳表(Skip List)是一种 基于有序链表 的随机化数据结构,通过 多层索引 实现快速查找、插入和删除操作,平均时间复杂度为 O(log N),最坏情况下为 O(N)。它由 William Pugh 在 1990 年提出,初衷是替代平衡树(如红黑树),但实现更简单。

跳表的通俗理解:

想象在一栋 10 层的图书馆 找一本书:

电梯(顶层索引):直接到 5 楼,发现目标在更高层。

扶梯(中层索引):从 5 楼坐到 8 楼,确认目标在 8~10 楼。

步行(底层):从 8 楼走到 9 楼,找到书。

跳表的作用就是帮你快速跳过不需要的楼层

2. 跳表的特点

3、跳表 和平衡树的对比

4、跳表的优缺点

5. 应用场景

【1】Redis 的 Sorted Set

核心实现:跳表 + 哈希表(哈希表存储成员到分数的映射,跳表按分数排序)。

为什么用跳表?

-- 支持 O(log N) 的范围查询(如 ZRANGE)。

--  比平衡树更适合高并发(无锁优化更简单)。

【2】LevelDB / RocksDB

跳表用作内存中的有序数据结构(MemTable),加速写入和查询。

【3】其他场景

-- 需要有序且频繁插入/删除的场景(如实时排行榜)。

-- 替代平衡树的简化方案(当代码可读性优先时)

二、分布式锁

1. SETNX + EXPIRE 方案及其原子性问题

基本实现方式:

SETNX lock_key uni

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化与智能化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值