缓存穿透 ,缓存击穿,缓存雪崩概念以及对应的规避方法

缓存穿透(Cache penetration)

概念

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

处理方案

方案1.

如果查询为空 则把这个键放入到redis 值为空 然后根据业务设置过期时间 一般不要超过5分钟

这种问题可能会有攻击,比如请求大量访问数据库不存在的键,直接把redis撑爆了 这个适合就要把失效时间设置的尽量短些,但是也无法规避同一时刻大量数据过来
方案2.

使用布隆过滤器

缓存击穿(Cache breakdown)

概念

缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。

处理方案

设置为永不过期

为了防止不在访问的时候占用内存,可以把热点数据的id都保存下来 后面批量删除下

感知热点数据
在这里插入图片描述

缓存雪崩(Cache avalanche)

概念

缓存雪崩,是指在某一个时间段,缓存集中过期失效。

处理方案

一般是采取不同分类商品,缓存不同周期。在同一分类中的商品,加上一个随机因子。这样能尽可能分散缓存过期时间,而且,热门类目的商品缓存时间长一些,冷门类目的商品缓存时间短一些,也能节省缓存服务的资源。

参考

https://baijiahao.baidu.com/s?id=1619572269435584821&wfr=spider&for=pc
https://developpaper.com/cache-penetration-cache-breakdown-cache-avalanche-solution-analysis/

https://mp.weixin.qq.com/s?__biz=MzU0OTk3ODQ3Ng==&mid=2247484401&idx=1&sn=823cffa4a1aa73335bdfb7c02e8c85f0&chksm=fba6ebf2ccd162e422b1b496f5790ebdf7f6d11adb8d2e00957ca371dcca0514a3fde09af521&scene=21#wechat_redirect

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值