栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

缓存穿透,雪崩,击穿。

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

缓存穿透,雪崩,击穿。

一,缓存访问流程:

正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在
或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。
如果数据库查询对象为空,则不放进缓存。

二,缓存穿透。
缓存穿透,是指同一时刻查询一个数据库一定不存在的数据。


=============================================================
三,缓存雪崩。
是指在某一个时间段,缓存集中过期失效,大量请求同时访问数据库,造成
数据库宕机。


=============================================================
四,缓存击穿。
大量的请求访问同一个Key,刚好那个key失效,那么同一时间所有的请求都会
穿过缓存,直接请求数据库,数据库无法承受这么大的访问压力,造成宕机。


=============================================================

五,解决方案。

1.击穿的解决办法:加锁。

如果根据key从缓存中查询不到数据,需要从数据库中查询数据时,可以加一把锁,

保证同一时间只有一个线程可以查询数据库,然后把查询出来的结果放回到缓存中,

这样其他的线程再用相同的key查询时,就可以直接从缓存中查到数据。

2.雪崩的解决办法: 加锁+key设置不同的失效时间。

雪崩有一个必要条件就是在同一时间,有大量的key同时失效,因此,我们只要保证

不会出现同一时间有大量的key同时失效就可以了。

3.穿透的解决办法: 业务规则过滤 + 布隆过滤器。

如果有大量请求访问不存在的key时,先通过过滤器检查一下key在数据库中是否存在,

如果存在才允许访问数据库。如果不存在,则直接返回。

=================================================================

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458771.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号