Skip to content

Redis 专栏导览 ​

标签
中间件/Redis
字数
1130 字
阅读时间
5 分钟

这一栏收录 Redis 的内部机制:数据在内存里以什么结构存放、一条命令为什么快、进程退出后数据怎么留下、内存满了淘汰谁、多节点怎么共用一把锁,以及拿它当缓存时怎么处理雪崩、击穿与双写不一致。

不收去哪看本专栏只关心
缓存穿透、雪崩在业务层的完整治理与网关限流各自业务的缓存设计文档Redis 视角下这三类异常与双写一致性的机制
分布式一致性的通用理论(CAP、共识算法、Raft)分布式Redis 自己用哪套机制做复制与故障转移
消息队列的投递语义、顺序保证与消费位点中间件/MQRedis 的 Stream 作为轻量消息队列的边界
键值存储的持久化理论、LSM 树与 WAL中间件/MySQLRedis 的 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 —— 数据库侧的计算存储分离形态,与本专栏的高可用方案互为对照

参考 ​

贡献者 ​

文件历史 ​