1. 课程导论:为什么需要内存淘汰策略?微服务缓存命中率的重要性
1.1 内存的有限性与淘汰策略的必然性
Redis 作为高性能内存数据库,其所有数据都驻留在 RAM 中。RAM 的容量远小于磁盘,且成本高昂。当写入数据量超过 Redis 配置的 maxmemory 上限时,系统必须做出选择:拒绝写入或删除部分旧数据。内存淘汰策略(Eviction Policy)正是解决这一矛盾的机制——它定义了在内存满时如何选择并移除键,以保证服务持续可用。
核心矛盾: 业务数据持续增长 vs. 物理内存固定上限。没有淘汰策略,Redis 会因 OOM 被内核杀死,或写入失败导致业务中断。
1.2 微服务架构下缓存命中率的战略价值
在微服务体系中,缓存层承担着“流量缓冲”和“数据加速”的双重角色。缓存命中率(Cache Hit Ratio)直接决定了后端数据库的负载与接口响应延迟。
| 指标 | 高命中率(>90%) | 低命中率(<50%) |
|---|---|---|
| 平均响应时间 | 1-5 ms | 50-200 ms(回源数据库) |
| 数据库 QPS | 低,连接池压力小 | 高,容易触发连接池满或慢查询 |
| 服务可用性 | 稳定,缓存击穿风险低 | 脆弱,雪崩概率上升 |
| 硬件成本 | 内存利用率高,性价比优 | 内存浪费,需频繁扩容 |
经验法则: 微服务网关层、用户会话、商品详情、配置中心等场景,缓存命中率每下降 10%,数据库负载通常增加 3-5 倍。
1.3 淘汰策略与命中率的直接关联
淘汰策略的选择会直接影响哪些数据被保留、哪些被移除,进而改变缓存的内容分布。错误的策略可能导致热点数据被提前驱逐,造成命中率骤降。
- LRU(最近最少使用):保留最近访问过的数据,适合访问模式有明显时间局部性的场景。
- LFU(最不经常使用):保留访问频率最高的数据,适合有稳定热点的业务。
- TTL 与过期淘汰:依赖业务主动设置过期时间,避免冷数据长期占用内存。
- 随机淘汰:简单但不可控,通常不推荐用于生产核心链路。
常见误区: 很多团队只关注 Redis 的
maxmemory-policy 配置项,却忽略了业务访问模式与策略的匹配度。例如,在“突发流量+短时热点”场景下使用纯 LRU,容易导致热点刚升温就被冷数据挤掉。
1.4 淘汰策略与微服务缓存的关系图
下图展示了从微服务请求到 Redis 内存淘汰的完整链路,以及命中率如何受淘汰策略影响。
1.5 本课程的核心目标
通过本课程,你将掌握以下能力:
- 理解 8 种 Redis 淘汰策略 的原理、适用场景与性能差异。
- 诊断缓存命中率问题:使用
INFO stats、MEMORY USAGE、SLOWLOG等工具定位低命中率根因。 - 策略选型与调优:根据业务访问模式(时间局部性、频率分布、过期语义)选择最优策略。
- 微服务缓存架构设计:结合本地缓存、分布式缓存、多级缓存,最大化整体命中率。
- 实战案例:覆盖电商秒杀、社交 Feed 流、配置中心、Session 共享等典型场景。
课程收益: 学完本课程后,你能够独立设计一套“高命中率、低延迟、低成本”的微服务缓存体系,并具备应对突发流量下缓存雪崩、击穿、穿透的实战能力。