Redis 专栏导览
标签
中间件/Redis
字数
1130 字
阅读时间
5 分钟
这一栏收录 Redis 的内部机制:数据在内存里以什么结构存放、一条命令为什么快、进程退出后数据怎么留下、内存满了淘汰谁、多节点怎么共用一把锁,以及拿它当缓存时怎么处理雪崩、击穿与双写不一致。
| 不收 | 去哪看 | 本专栏只关心 |
|---|---|---|
| 缓存穿透、雪崩在业务层的完整治理与网关限流 | 各自业务的缓存设计文档 | Redis 视角下这三类异常与双写一致性的机制 |
| 分布式一致性的通用理论(CAP、共识算法、Raft) | 分布式 | Redis 自己用哪套机制做复制与故障转移 |
| 消息队列的投递语义、顺序保证与消费位点 | 中间件/MQ | Redis 的 Stream 作为轻量消息队列的边界 |
| 键值存储的持久化理论、LSM 树与 WAL | 中间件/MySQL | Redis 的 AOF 与 RDB 两条落盘路径 |
目录
- 01 · 01-Redis 基础与线程模型 —— Redis 是什么、与 Memcached 的取舍、事件循环与 I/O 多路复用怎么撑起十万连接、单线程为什么快、6.0 的多线程 I/O 用在哪,以及管道、事务与延迟队列
- 02 · 02-数据类型与底层数据结构 —— 九类数据类型各自的场景、命令与复杂度,以及它们底下的 SDS、listpack、哈希表与渐进式 rehash、整数集合、跳表、quicklist 与编码转换的阈值
- 03 · 03-持久化:AOF、RDB 与混合持久化 —— AOF 为什么是写后日志、三种
appendfsync各丢多少、重写期间的两个缓冲区、7.0 的 multi-part AOF,以及 fork 与写时复制在大 Key 上的代价 - 04 · 04-过期删除与内存淘汰 —— 惰性删除与定期删除如何配合、过期键在 RDB/AOF/主从下的不同处理、八种
maxmemory-policy的判据、近似 LRU 与 LFU 的取舍,以及 lazyfree 与内存碎片 - 05 · 05-分布式锁 —— 锁争抢、僵尸锁、锁过期、存储不可靠四类冲突,
SET NX PX与 Lua 释放为什么必须原子,看门狗续期,以及主从切换丢锁与 Redlock 的争议 - 06 · 06-高可用:主从复制、哨兵与 Cluster —— 全量同步与
repl_backlog增量复制的判定、哨兵的主观下线与客观下线、Raft 式选举与故障转移、Cluster 的哈希槽与 MOVED/ASK,以及三者怎么选 - 07 · 07-缓存设计与数据库一致性 —— 雪崩、击穿、穿透各自的断点与对策,Cache Aside 与另外两种更新策略、四种写顺序的并发推演、延迟双删与订阅 binlog 的兜底
阅读顺序
01 → 02 → 03 → 04 → 05 → 06 → 07。这条顺序是一条依赖链,不按热门程度排。
01 给全局骨架:Redis 是什么、为什么快、命令怎么被执行,后面每一篇都落在这个模型上。02 接在 01 之后,因为「为什么快」有一半答案在数据结构 —— 九类类型与它们的底层实现决定了每条命令的复杂度。03 与 04 是一组,管「数据怎么留住、内存怎么腾出来」:03 讲持久化的两条落盘路径,04 讲键过期与内存淘汰,两者都会碰到同一批大 Key 与 maxmemory 参数。05 是并发控制的一侧,依赖 02 的 SET NX 语义与 Lua 的原子性。06 把视野从单机拉到多节点:主从复制是哨兵与 Cluster 的共同底座,哨兵解决「主库宕了谁顶上」,Cluster 再加一层分片。07 收尾,把前面所有机制放进「拿 Redis 当缓存」这一个具体场景里,处理雪崩、击穿、穿透与数据库双写不一致。
相关
- 00-中间件专栏导览 —— 本专栏在中间件这一层的定位,以及与 MQ、MySQL 的分工
- 06-Aurora —— 数据库侧的计算存储分离形态,与本专栏的高可用方案互为对照
参考
- 小林coding. 图解 Redis v2.0. https://xiaolincoding.com/redis/
- Redis. Redis Documentation. https://redis.io/docs/latest/
YJ