缓存雪崩、缓存击穿、缓存穿透原因及解决办法

这篇具有很好参考价值的文章主要介绍了缓存雪崩、缓存击穿、缓存穿透原因及解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

缓存雪崩是指在缓存中的大量数据在同一个时刻全部过期,导致原本这些可以由缓存中间件处理的高并发请求,一下子全部打到数据库,导致数据库服务器崩溃的一种现象。那么出现缓存雪崩的原因可以有①:缓存中间件宕机。②:缓存中大部分key都设置了相同的时间,导致这些key在同一时间内全部失效。解决的方法:

①:可以对这些个key设置可以失效的随机值,避免同时失效的问题。

②:还可以对数据库的读写加锁,不让那么瞬时高并发的请求一下子突然打到数据库上。

③:即使如果真的发生了缓存雪崩,使用数据库的主从复制、双主、读写分离等策略,数据库本身的容灾能力应该还是可以承受住的。

缓存穿透是指缓存穿透是指在使用缓存系统的应用程序中,恶意请求或者无效的请求频繁地访问缓存中不存在的数据,导致大量请求直接访问后端数据库或服务,而绕过了缓存系统的情况。可能出现的原因其实是可出现了恶意攻击行为。对于一个成熟的系统来说,由于缓存预热的不断加载,即便是出现了一个不存在的key,影响也不会很大,那么恶意攻击行为可能具有持久性,确认这个key在数据库中不存在,才会达到这样一个行为。解决的方法:

①:把这些无效的key保存到Redis里面,并设置一个null的特殊值,这样就不会去查数据库了。但是如果攻击者一直恶意攻击同样会出现相同的问题。

②:使用布隆过滤器来实现。把这些数据全部放到布隆过滤器里面,当进行查询时,先到布隆过滤器里面进行查询,如果查询不存在,那么这个key在数据库中肯定也不会存在,那么就不会去访问数据库了。

③:缓存预热,预先加载热点数据到缓存中,避免在某些特定时刻,高并发的请求打到数据库上。

缓存击穿是指当某个热点数据过期或被主动移除时,大量的并发请求同时访问该数据库,导致缓存无法命中,进而直接访问数据库或后端服务。对应的解决方案:

①:设置热点数据的永不过期策略:对于一些非常热点且不经常变动的数据,可以将其缓存设置为永不过期,确保数据一直存在于缓存中,避免了过期导致的击穿问题。

②:延迟缓存更新策略(缓存穿透):当发现某个缓存键对应的数据不存在时,可以采取一定的策略,如先访问数据库或后端服务获取数据,然后将数据写入缓存,避免了多个并发请求同时访问数据库。

③:布隆过滤器(Bloom Filter):布隆过滤器可以用于快速判断某个键是否存在于缓存中,如果布隆过滤器判断键不存在,则不会进一步访问缓存或数据库,从而减轻了缓存击穿的压力。

④:缓存预热(Cache Pre-warming):在系统启动或低峰期,预先加载热点数据到缓存中,使其在高峰期可用,从而避免了高并发请求直接访问数据库。

这里只列出来一小部分方案👀🤞文章来源地址https://www.toymoban.com/news/detail-480259.html

到了这里,关于缓存雪崩、缓存击穿、缓存穿透原因及解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 缓存穿透、缓存雪崩、缓存击穿解决方案

    缓存就是数据交换的缓冲区(称作Cache),是存贮数据的临时地方,一般读写性能较高。 需求:添加ShopTypeController中的queryTypeList方法,添加查询缓存 业务场景: 低一致性需求:使用内存淘汰机制。例如店铺类型的查询缓存 高一致性需求:主动更新,并以超时剔除作为兜底方

    2023年04月09日
    浏览(67)
  • Redis 击穿、穿透、雪崩产生原因解决思路

    大家都知道,计算机的瓶颈之一就是IO,为了解决内存与磁盘速度不匹配的问题,产生了缓存,将一些热点数据放在内存中,随用随取,降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是,无论是击穿还是后面谈到的穿透与雪崩,都是在高并发前提下,比如当缓存中

    2024年01月20日
    浏览(35)
  • Redis 如何解决缓存雪崩、缓存击穿、缓存穿透难题

    Redis 作为一门热门的缓存技术,引入了缓存层,就会有缓存异常的三个问题,分别是缓存击穿、缓存穿透、缓存雪崩。我们用本篇文章来讲解下如何解决! 缓存击穿 : 指的是缓存中的某个热点数据过期了,但是此时大量的并发请求访问这个key的值,此时因为缓存过期无法从

    2024年02月14日
    浏览(32)
  • [Redis]缓存穿透、缓存击穿、缓存雪崩问题及解决方法

    缓存穿透就是指在高并发的情况下大量的请求去查询一个不存在于缓存中的数据,导致这些请求都直接访问数据库,给数据库造成压力。例如:我存储在缓存中的key是数字类型(123),但是网络攻击者频繁地用字符串(abc)去获取缓存。导致永远都无法命中缓存,请求最终都

    2024年02月15日
    浏览(35)
  • redis缓存穿透、缓存击穿、缓存雪崩及对应解决方法

    缓存穿透、击穿和雪崩是缓存使用中的常见问题,对它们的理解和相应的解决方法对于维护系统性能和稳定性至关重要。 定义 : 当客户端请求的数据在缓存中和数据库中都不存在时,该请求会直接打到数据库上,这种情况称为缓存穿透。如果持续请求这样的数据,会给数据

    2024年04月08日
    浏览(36)
  • 缓存击穿、穿透、雪崩及常用解决方案

    Redis是一种高性能的键值型数据库,它可以用来实现缓存功能,提高应用的响应速度和承载能力。但是,使用Redis缓存也会遇到一些常见的问题,比如缓存击穿、缓存穿透、缓存雪崩。这些问题都会影响缓存的效率和稳定性,所以需要了解它们的原因和解决方案,保障Redis能够

    2024年02月06日
    浏览(34)
  • Java缓存穿透、击穿、雪崩解决方案

    在互联网高并发的场景下,对于数据库查询频率高的数据,为了提高查询效率,常常会采用缓存技术进行优化。然而,缓存技术也会带来一些问题,比如缓存穿透、缓存击穿和缓存雪崩等。 当我们从缓存中查询一个不存在的数据时,请求就会穿透缓存直接查询数据库,这样就

    2023年04月19日
    浏览(48)
  • redis缓存雪崩、穿透、击穿解决方案

    关于缓存异常,我们常见的有三个问题:缓存雪崩、缓存击穿、缓存穿透。这三个问题一旦发生,会导致大量请求直接落到数据库层面。如果请求的并发量很大,会影响数据库的运行,严重的会导致数据库宕机。 为了避免缓存异常带来的损失,我们需要了解每种异常的原因以

    2024年02月10日
    浏览(40)
  • Redis缓存穿透、击穿、雪崩问题及其解决方法

    缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 常见的解决方案有两种: 缓存空对象 优点:实现简单,维护方便 缺点: 额外的内存消耗 可能造成短期的不一致 布隆过滤 优点:内存占用较少,

    2024年02月02日
    浏览(31)
  • Redis什么是缓存穿透、击穿、雪崩?如何解决

    通常后端会采用Mysql等磁盘数据库,可以持久化但是访问慢,高并发时性能差,需要设置Nosql内存型数据库缓存:Redis等 但缓存可能出现:缓存穿透、缓存击穿、缓存雪崩等问题 查找数据的顺序是:先查找缓存,再查找数据库 当查找一个数据时,缓存没有都会请求数据库,当

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包