1 缓存
这里讲Redis缓存。Redis利用计算机的外存内存(非CPU内存)作为存储介质,提高数据读写性能。
当然,Redis也有其他高性能技术,还在学习中。
2 缓存失效
常见的Redis失效有三个名词:击穿、穿透、雪崩。
共同点:Redis缓存失效,没有命中数据(数据为空或者Redis异常)。
不同点:最终返回响应不同。
2.1 缓存击穿
Redis没有命中数据,持久层命中数据,并返回有效数据。
并且将持久层命中的数据缓存到Redis。
2.2 缓存穿透
Redis没有命中数据,持久层没有命中数据,并返回空数据。
2.3 缓存雪崩
Redis没有命中数据,持久层异常,并返回异常数据(信息)。
3 方案
每种情况都有各自的方案,但是,
最终都是围绕Redis缓存失效的问题展开。
这里,笼统做一下梳理:
序号 | 方案 |
---|---|
1 | 高可用(集群方式部署缓存) |
2 | 限流降级(缓存失效后,通过加锁或队列控制持久层数据库读写数量) |
3 | 数据预加载(先加载部分数据) |
4 | 设置不同的过期时间 |
5 | 热点数据永远不过期 |
4 小结
缓存失效:击穿、穿透、雪崩。
共同点:Redis缓存失效,没有命中数据(数据为空或者Redis异常)。
不同点:最终返回响应不同。
针对Redis缓存失效,常用的方案:预加载、限流、熔断等。