缓存穿透,雪崩,击穿。

一,缓存访问流程:

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

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


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


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


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

五,解决方案。

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

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

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

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值