🏗️ 数据结构与底层编码
5 种基础类型 + 高级类型的使用场景;ziplist/listpack/skiplist 等底层编码切换原理;跳表为什么比红黑树更适合 Redis。
第1阶段 数据结构 → 5种基础类型、底层编码第2阶段 持久化机制 → RDB、AOF、混合持久化第3阶段 内存管理 → 淘汰策略、LRU/LFU第4阶段 缓存模式 → 分布式锁、双写一致第5阶段 集群高可用 → 主从、哨兵、Cluster Redis │ ┌───────────┬───────────┼───────────┐ ▼ ▼ ▼ ▼ 数据结构 持久化 内存管理 缓存模式 │ │ │ │• String • RDB • 过期删除 • 分布式锁• Hash • AOF • 淘汰策略 • 缓存穿透• List • COW • LRU/LFU • 缓存击穿• Set • 混合持久化 • 内存分配 • 缓存雪崩• ZSet • • • 双写一致| 专题 | 考察频率 | 难度 | 核心能力 |
|---|---|---|---|
| 数据结构 | ★★★★☆ | 中 | 底层编码 |
| 持久化 | ★★★★★ | 高 | COW 原理 |
| 内存管理 | ★★★★☆ | 高 | 淘汰策略 |
| 缓存模式 | ★★★★★ | 高 | 分布式锁 |
| 集群高可用 | ★★★★☆ | 高 | 架构设计 |
🏗️ 数据结构与底层编码
5 种基础类型 + 高级类型的使用场景;ziplist/listpack/skiplist 等底层编码切换原理;跳表为什么比红黑树更适合 Redis。
💾 持久化机制
RDB 快照 vs AOF 日志的核心区别;bgsave 的 fork + COW 原理;混合持久化的数据格式与恢复速度优势。
🧠 内存管理与淘汰
过期键的惰性删除 + 定期删除双策略;8 种淘汰策略选型;近似 LRU 与 LFU 的实现原理与代价。
⚡ 原子性与缓存模式
分布式锁的实现与 RedLock 争议;缓存穿透/击穿/雪崩三大经典问题;缓存与数据库双写一致性方案。
🌐 集群架构与高可用
主从复制与 PSYNC2 协议;哨兵选主机制;Cluster 的 16384 slot 分片设计;脑裂问题与防御策略。
| 专题 | 初级 | 中级 | 高级 | 代表问题 |
|---|---|---|---|---|
| 数据结构 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 跳表为什么不用红黑树? |
| 持久化 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | bgsave 期间主进程还能写数据吗? |
| 内存管理 | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 近似 LRU 的采样原理? |
| 缓存模式 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 分布式锁如何防止误删? |
| 集群高可用 | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Redis 脑裂如何处理? |
MySQL(磁盘) Redis(内存)──────────── ────────────读延迟:1~10ms vs 读延迟:0.1msQPS上限:~数千 vs QPS上限:10万+随机IO:贵 vs 内存访问:廉Redis 是现代高并发架构的标配缓存层,几乎所有中大型系统都用。面试官考 Redis,本质是在考:
单线程模型(命令执行) ↓避免了锁竞争和线程切换开销
内存存储 ↓纳秒级内存访问 vs 毫秒级磁盘 IO
IO 多路复用(epoll) ↓单线程处理数万并发连接
高效数据结构 ↓ziplist/skiplist/SDS 针对内存和访问模式专门优化⚠️ 注意:Redis 6.0 引入了 IO 多线程(网络读写多线程化),但命令执行仍是单线程。面试中要区分「网络 IO 线程」和「命令执行线程」。
第1天 数据结构与底层编码 → 高频,先打基础第2天 持久化机制 → 原理深,要理解 COW第3天 内存管理与淘汰 → LRU/LFU 实现是亮点第4天 缓存模式与分布式锁 → 最高频,要会设计第5天 集群架构与高可用 → 架构题必备