RedisIT禅与计算机程序设计艺术

缓存雪崩 & 缓存穿透

2019-06-30  本文已影响27人  光剑书架上的书

缓存雪崩 & 缓存穿透

缓存雪崩 & 缓存穿透.png

缓存流程

1.参数传入对象主键ID

2.根据key从缓存中获取对象

3.如果对象不为空,直接返回

4.如果对象为空,查询数据库

5.如果从数据库查询出的对象不为空,则放入缓存(设定过期时间)

缓存雪崩

如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了。

如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删掉。

这就会导致在这段时间内,这些缓存同时失效,全部请求到数据库中。

缓存挂掉解决方案

缓存过期时间集中解决方案

缓存穿透

查询缓存和数据库中都没有的数据

解决方案

缓存击穿

爆炸查询缓存中没有但数据库中有的数据

解决方案

互斥锁(mutex lock)

缓存预热

系统上线后,将相关的缓存数据直接加载到缓存系统。

定时刷新缓存

缓存更新

定时去清理过期的缓存

缓存降级

保证核心服务可用

缓存与数据库双写不一致的问题

解决方案


Kotlin 开发者社区

国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。
Kotlin 开发者社区 QRCode.jpg
上一篇下一篇

猜你喜欢

热点阅读