07_缓存预热&缓存雪崩&缓存击穿&缓存穿透

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

缓存预热&缓存雪崩&缓存击穿&缓存穿透

一、缓存预热

07_缓存预热&缓存雪崩&缓存击穿&缓存穿透,redis,缓存

提前将数据从数据库同步到redis。

  1. 在程序启动的时候,直接将数据刷新到redis
  2. 懒加载,用户访问的时候,第一次查询数据库,然后将数据写入redis

二、缓存雪崩

  1. 发生情况
    1. redis主机挂了,redis全盘崩溃,偏硬件运维
    2. redis中有大量key同时过期或大面积失效,偏软件开发
  2. 预防&解决方法
    1. redis中key设置永不过期,或者过期时间错开
    2. redis集群实现高可用
      1. 主从+哨兵
      2. redis 集群
      3. 开启redis持久化aof、rdb,尽快恢复集群数据
    3. 多缓存结合预防雪崩
      1. encache本地缓存+redis缓存
    4. 服务降级
      1. hystrix或者sentinel限流&降级
    5. 使用云服务redis

三、缓存穿透

  1. 是什么

    1. 请求去查询一条记录,先查redis无,后查mysql无,都查询不到该条记录,但是请求每次都会打到数据库上面去,导致后台数据库压力暴增,这种现象我们称为缓存穿透,这个redis就变成了一个摆设。

    2. 简单说就是,本来无一物,两库都没有。既不在Redis,也不在数据库,数据库存在被多次暴击风险

  2. 解决

    1. 缓存穿透最怕恶意攻击,使用空对象缓存、布隆过滤器可解决

      07_缓存预热&缓存雪崩&缓存击穿&缓存穿透,redis,缓存

    2. 空对象缓存或者缺省值

      07_缓存预热&缓存雪崩&缓存击穿&缓存穿透,redis,缓存

      黑客或者恶意攻击

      黑客会对你的系统进行攻击,拿一个不存在的id去查询数据,会产生大量的请求到数据库去查询。可能会导致你的数据库由于压力过大而宕掉。

      1. key相同

        第一个打到mysql,空对象缓存后,第二次就返回null或者默认值,避免mysql被打击,不用再查询数据库。

      2. key不相同

      由于存在空对象缓存和缓存回写,redis中的无关紧要的key也会越来越多,需要设置过期时间

    3. 使用google guava布隆过滤器

      guava中布隆过滤器的实现比较权威,所以实际项目中可以直接使用guava布隆过滤器

      案例:白名单过滤

四、缓存击穿

  1. 是什么

    大量的请求同时查询一个key,并且这个key此时正好失效了,就会导致大量的请求到达数据库。

    简单的说就是热点key突然失效,暴打mysql

  2. 危害

    会造成某一时刻数据库请求过大,压力剧增

    一般需要技术部门知道哪些是热点key,防止击穿

  3. 解决

    缓存击穿,热点key失效,解决方法:互斥更新、随机退避、差异失效时间

    失效原因:

    1. 时间到了自然清除,但还被访问到了
    2. 删除key的时候,突然被访问到了

    解决方法:

    1. 差异失效时间,对于访问频繁的热点key,就不设置过期时间

      07_缓存预热&缓存雪崩&缓存击穿&缓存穿透,redis,缓存

    2. 互斥更新,采用双检加锁策略

五、总结

07_缓存预热&缓存雪崩&缓存击穿&缓存穿透,redis,缓存文章来源地址https://www.toymoban.com/news/detail-662947.html

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

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

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

相关文章

  • Redis 之 缓存预热 & 缓存雪崩 & 缓存击穿 & 缓存穿透

    目录 一、缓存预热 1.1 缓存预热是什么? 1.2 解决方案: 二、缓存雪崩 2.1 缓存雪崩是什么?怎么发生的? 2.2 怎么解决 三、缓存穿透 3.1 是什么?怎么产生的呢? 3.2 解决方案  3.2.1、采用回写增强,  3.2.2、加上一个布隆过滤器, 四、缓存击穿 4.1 是什么? 4.2 怎么解决 五

    2024年02月13日
    浏览(38)
  • 第十八章_Redis缓存预热+缓存雪崩+缓存击穿+缓存穿透

    缓存预热 缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据。 可以通过@PostConstruct初始化白名单数据 缓存雪崩 发生  redis主机挂了,Redis 全盘崩溃

    2024年02月07日
    浏览(47)
  • Redis7之缓存预热 + 缓存雪崩 + 缓存击穿 + 缓存穿透(八)

    缓存预热就是系统上线后,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据! 使用 @PostConstruct 初始化白名单数据 缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造

    2023年04月08日
    浏览(46)
  • 探讨Redis缓存问题及解决方案:缓存穿透、缓存击穿、缓存雪崩与缓存预热(如何解决Redis缓存中的常见问题并提高应用性能)

    Redis是一种非常流行的开源缓存系统,用于缓存数据以提高应用程序性能。但是,如果我们不注意一些缓存问题,Redis也可能会导致一些性能问题。在本文中,我们将探讨Redis中的一些常见缓存问题,并提供解决方案。 缓存穿透指的是当一个请求尝试访问一个不存在于缓存中的

    2024年02月03日
    浏览(93)
  • 14、缓存预热+缓存雪崩+缓存击穿+缓存穿透

    缓存预热+缓存雪崩+缓存击穿+缓存穿透 ● 缓存预热、雪崩、穿透、击穿分别是什么?你遇到过那几个情况? ● 缓存预热你是怎么做到的? ● 如何避免或者减少缓存雪崩? ● 穿透和击穿有什么区别?它两一个意思还是截然不同? ● 穿透和击穿你有什么解决方案?如何避免

    2024年02月12日
    浏览(33)
  • Redis 缓存穿透、缓存雪崩、缓存击穿

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

    2024年02月02日
    浏览(46)
  • redis 缓存雪崩 && 缓存击穿 && 缓存穿透

    什么是缓存雪崩 当我们提到缓存系统中的问题,缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效,导致瞬间大量的请求直接打到了数据库,可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中,这种情况会导致连锁反应,整个系

    2024年02月07日
    浏览(49)
  • REDIS缓存穿透 击穿 雪崩

    一、前言   在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来

    2024年02月09日
    浏览(42)
  • Redis缓存击穿、雪崩、穿透

    我们通过对数据库的数据进行查询后在redis中缓存,但是在高并发环境下,某个保存的key值在失效的瞬间被大量并发请求访问,这些持续的大并发量就会穿破缓存,直接请求数据库,会对数据库造成巨大压力,这些请求还会使数据多次写入缓存,多了许多不必要的操作。    

    2024年02月08日
    浏览(45)
  • Redis缓存穿透,雪崩,击穿

    1、定义 缓存 就是数据交换的 缓冲区 ,缓存就是 缓冲区内的数据 ,一般从数据库中获取,存储于本地代码。 由于其被 Static 修饰,所以随着类的加载而被加载到 内存之中 ,作为本地缓存,由于其又被 final 修饰,所以其引用和对象之间的关系是固定的,不能改变,因此不用担心赋值(=

    2024年02月10日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包