缓存契约版本Redis领域建模与架构设计 - 第1节

1.1 缓存的定义与本质

缓存(Cache)是一种将数据存储在临时、高速存储介质中的技术,其核心目的是缩短数据访问路径,降低系统响应延迟。在计算机体系结构中,缓存无处不在:从 CPU 的 L1/L2/L3 缓存,到操作系统的页缓存,再到分布式系统中的 Redis、Memcached 等中间件,其本质都是用空间换时间。

缓存的核心公式: 缓存命中率 = 缓存返回有效数据的请求数 / 总请求数。命中率越高,系统整体延迟越低。

缓存并非数据库的替代品,而是位于应用与数据库之间的加速层。它存储的是数据库中的热点数据子集或计算密集型结果,而非全量数据。

缓存在系统架构中的位置 应用服务 缓存层 (Redis) 持久化数据库 ① 读请求 ② 缓存命中返回 ③ 缓存未命中回源 ④ 回写缓存 缓存工作流程 1. 应用先查询缓存;若命中,直接返回,延迟极低(通常 < 1ms)。 2. 若缓存未命中,回源数据库查询,并将结果写入缓存,下次命中。

1.2 缓存的核心作用

缓存并非万能银弹,但在以下四个场景中效果显著:

作用维度 具体效果 典型指标
降低延迟 内存访问延迟约 0.1µs,磁盘 I/O 约 10ms,差距达 10 万倍 P99 延迟从 50ms → 2ms
提升吞吐 单机 Redis 可达 10 万 QPS,MySQL 通常 1 万 QPS 系统 QPS 提升 5~10 倍
保护数据库 缓存吸收 90% 以上读请求,减少数据库连接数 数据库 CPU 使用率下降 60%
削峰填谷 秒杀、热点新闻等突发流量由缓存承接 抗住 10 倍峰值流量
架构经验: 缓存不是越厚越好。引入缓存会增加系统复杂度、一致性成本和运维负担。只有当数据库成为性能瓶颈,且业务允许一定程度的最终一致性时,才值得引入缓存层。

1.3 缓存与数据库的对比

理解缓存与数据库的差异,是正确设计缓存策略的前提。以下从六个关键维度进行对比:

对比维度 缓存(Redis 为例) 数据库(MySQL 为例)
存储介质 内存(DRAM) 磁盘(SSD/HDD)
数据模型 Key-Value、List、Set、Hash 等 关系表、行、列、索引
读写性能 读 10 万+ QPS,写 5 万+ QPS 读 1 万 QPS,写 5 千 QPS
持久化 RDB/AOF 持久化,但非强一致 WAL + 事务,ACID 保证
查询能力 简单键查询、有限聚合 复杂 JOIN、子查询、事务
数据容量 受限于内存(GB ~ TB 级) PB 级,可水平扩展
常见误区: 不要试图用缓存替代数据库。缓存的数据是易失的、非事务的、容量有限的。数据库才是数据的最终权威来源(Source of Truth),缓存只是加速副本。

1.4 缓存穿透 / 击穿 / 雪崩 —— 初步认识

这三个问题是缓存系统最常见的故障模式,被称为缓存三大灾难。理解它们的成因是后续章节设计防御策略的基础。

1.4.1 缓存穿透

定义: 查询一个根本不存在的数据,缓存和数据库中都没有,导致每次请求都穿透缓存直达数据库。

  • 危害: 恶意攻击者利用不存在的 Key 发起大量请求,数据库压力骤增,可能直接宕机。
  • 初步解法: 缓存空值(Null Object)、布隆过滤器(Bloom Filter)。

1.4.2 缓存击穿

定义: 一个热点 Key 在缓存中过期失效的瞬间,大量并发请求同时回源数据库,导致数据库负载飙升。

  • 危害: 单个热点 Key 失效即可拖垮数据库,常见于秒杀商品、热搜榜单。
  • 初步解法: 互斥锁(Mutex Key)、逻辑过期、永不过期 + 异步刷新。

1.4.3 缓存雪崩

定义: 大量缓存 Key 在同一时间集中过期失效,或缓存节点宕机,导致海量请求直接压向数据库。

  • 危害: 范围最广、破坏性最强,可能导致整个服务链崩溃。
  • 初步解法: 过期时间加随机值、缓存集群高可用(主从 + Sentinel/Cluster)、限流降级。
缓存三大灾难对比 缓存穿透 场景 查询不存在的 Key 缓存 & 数据库均无 每次请求穿透到 DB 缓存击穿 场景 单个热点 Key 过期 大量并发同时回源 数据库瞬间高负载 缓存雪崩 场景 大量 Key 同时过期 或缓存节点宕机 海量请求压垮 DB 核心区别速览 • 穿透:数据本身不存在,缓存永远无法命中 • 击穿:数据存在,但缓存刚好过期,并发回源 • 雪崩:大面积缓存失效,范围最广,破坏力最强

1.5 本章小结

  • 缓存本质:临时高速存储,用空间换时间,位于应用与数据库之间。
  • 核心作用:降低延迟、提升吞吐、保护数据库、削峰填谷。
  • 与数据库关系:缓存是加速副本,数据库是权威源,二者互补而非替代。
  • 三大灾难:穿透(不存在的数据)、击穿(热点 Key 过期并发)、雪崩(大面积同时失效)。