浅谈缓存穿透,缓存击穿,缓存雪崩

文章讨论了缓存穿透现象,即由于用户查询错误或恶意查询导致数据库频繁查询不存在的数据。为解决这一问题,提出了一种方案:当数据库查询无结果时,将空数据存入缓存并设置短暂有效期。这种方法虽能减轻数据库压力,但可能导致短期数据不一致。
摘要由CSDN通过智能技术生成

本文章在微服务技术前的理解!!

本文章在微服务技术前的理解!!

本文章在微服务技术前的理解!!

黑马Redis课程的总结

缓存穿透

产生原因

用户在进行查询时,查错了,然而以为是对的,一直查询(有点类似于我们访问某个网站刷新不出来,我们普遍会疯狂点刷新)或者恶意查询(利用某个不存在的一直在查询,道理是一样的),然而缓存中和数据库中没有该数据,导致查询请求直接打到数据库。

解决方案

一直查询数据库会导致数据库的性能降低,从而降低体验,所以要解决这个问题,除了前端对格式提高校验要求等,还有后端的一些解决方案。

方案一:缓存不存在的数据

我们可以在查询完数据库以后,如果数据不存在,把数据添加进缓存,并且设置一个较短缓存的时间。

这样下次用户进行查询时,会直接从缓存中拿取"不存在的数据",降低数据库压力。

//这里只写逻辑

    //1.查询缓存

    //2.缓存不存在

    //3.查询数据库
    /*更新部分
      3.1 对结果进行判定
      3.2 如果结果存在,直接返回
      3.3如果结果不存在,存入缓存,设置一个有效期
    */
    //4.返回结果
优点
  • 1.实现简单

  • 2.维护方便

缺点
  • 1.有额外内存消耗

  • 2.短期数据不一致

短期数据不一致:在存入空对象的时候设置了短暂的有效期,在这个有效期内,通过此key存入了数据

只要缓存还没过期,就会导致读取数据还是空。

未完待续!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值