Redis
Redis 是一个基于内存的高性能键值数据库。除了 String、Hash、List、Set、ZSet 等基础数据结构,还提供过期、持久化、发布订阅、Stream、Lua、事务等能力。
实际项目中我主要把它用于:缓存、分布式锁、计数、限流以及临时状态管理。本模块按「原理 → 结构 → 场景能力 → 实战」组织,每块强调怎么用、踩什么坑、怎么优化,而不是背命令大全。
学习 / 面试地图
| 分区 | 核心问题 | 入口 |
|---|---|---|
| 1. 基础原理 | 是什么、为什么快、线程与 IO | 基础原理 |
| 2. 数据结构 | 选哪种类型、底层与场景 | 数据类型 · 命令与过期 |
| 3. 缓存 | 穿透/击穿/雪崩、热点与一致性 | 缓存问题 |
| 4. 持久化 | RDB / AOF / 混合与恢复 | 持久化 |
| 5. 高可用 | 主从、Sentinel、Cluster | 集群与高可用 |
| 6. 分布式 | 锁、Redisson、续期与误删 | 分布式锁 |
| 7. 并发 | 原子、Lua、库存、限流 | 并发与原子 |
| 8. 消息 | Pub/Sub、Stream、延迟队列 | 消息与事务 |
| 9. 性能 | BigKey、HotKey、Pipeline、淘汰 | 性能优化 |
| 10. 实战 | 登录、秒杀、点赞、排行榜等 | 场景实战 |
快速刷题仍可用:面试高频总览。
按追问连续口述练:面试连环追问。
我怎么定位 Redis
text
不是「第二个 MySQL」
而是:热数据与协调能力层
优先:
缓存读路径
分布式互斥(锁)
计数 / 限流 / 会话与临时状态
谨慎:
当唯一可靠消息队列(复杂投递语义优先 MQ)
当永久主存(要靠持久化 + 备份 + 恢复演练)核心优化原则(贯穿全模块)
- Key 设计规范:业务前缀 + 明确过期;禁止无 TTL 的大杂烩
- 防穿透 / 击穿 / 雪崩:空值、互斥、过期随机、多级缓存
- 锁必须可续期、可校验持有者:优先 Redisson,忌裸
SETNX忘记过期 - 大 Key / 热 Key 单独治理:拆分、本地缓存、读写分离或集群槽位感知
- 批量用 Pipeline / Lua:减 RTT;耗时命令与
KEYS *禁止上生产 - 高可用按需求选型:主从够用就别上 Cluster;Cluster 要懂槽位与跨槽限制
按左侧菜单分区推进;实战页把能力串成可口述的项目故事。