雪崩

redis中的key在某个时间段内,大量的失效,此时有大量请求查询这些key,那么这些请求就会去到后端数据库查询,后端数据库压力过大导致数据库宕机,最后系统崩溃。(雪崩的时候没有一片雪花是无辜的)
解决:

①缓存失效后,通过加锁或者队列的方式来控制线程去读数据库的数量。
②做二级缓存,A1为原始缓存,短期的。A2为拷贝缓存,长期的,A1失效了,A2还可以查询
③设置key的时候尽量让存活时间不同,均匀过期时间,尽量不要在同一时间段过期。

穿透

有大量恶意的请求访问redis中不存在的key,这些请求就会去访问后端数据库,使得后端数据库压力增大
解决:

①封掉恶意的ip地址
②在访问redis不存在的key时,去访问数据库统一返回null
③对不合法的参数进行拦截,拒绝访问
④使用布隆过滤器,将所有可能存在的key存在一个足够大的bitmap中,那么一个不存在的数据就会被这个bigmap拦截,从而减小对数据库的访问压力

击穿

有大量请求在访问一个redis的热点key,突然这个热点key失效了,那么这些请求都去访问后端数据库,导致后端数据库宕机。
解决:

①把热点key的存活时间设置为永久
②使用互斥锁,当key失效后,第一个线程拿到锁去访问数据库,其他线程等待,把这个线程访问到的数据缓存到redis中,其他线程进来后发现redis已经有数据了,那么都去访问redis的数据。

参考:Redis的雪崩,击穿,穿透详解

redis的雪崩、穿透、击穿解析相关推荐

  1. Redis缓存雪崩缓存击穿缓存穿透

    Redis缓存雪崩&缓存击穿&缓存穿透 一 缓存更新策略 二 缓存雪崩 三 缓存击穿 四 缓存穿透 一 缓存更新策略 目前redis缓存更新存在3种主流策略,分别是:内存淘汰.超时剔除 ...

  2. Redis 缓存雪崩、击穿、穿透

    Redis 缓存雪崩.击穿.穿透 文章目录 Redis 缓存雪崩.击穿.穿透 一.Redis基础 Redis基本数据类型.操作 二.面试相关问题 1.小伙子您好,看你简历上写了你项目里面用到了Redi ...

  3. 面试填坑之Redis无底洞(一、Redis缓存雪崩、击穿、穿透)

    Redis缓存雪崩.击穿.穿透 学习自大佬:https://blog.csdn.net/qq_35190492/article/details/102889333 https://www.cnblog ...

  4. redis缓存雪崩、击穿、穿透

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.redis缓存雪崩 二.redis缓存击穿 三.redis缓存穿透 前言 主要是介绍一下redis缓存雪崩.击穿. ...

  5. 【redis】缓存预热雪崩穿透击穿

    [redis]缓存预热雪崩穿透击穿(上) 文章目录 [redis]缓存预热雪崩穿透击穿(上) 前言 一.面试题 二.缓存预热 三.缓存雪崩 发生原因 预防+解决 高可用: 多缓存结合: 人民币玩家 四 ...

  6. 如何解决Redis缓存雪崩、击穿与穿透

    Redis最常用使用的场景就是作为业务系统的缓存,既然是作为缓存,那么就不免会碰到缓存常见的问题,即雪崩.击穿与穿透,什么是缓存雪崩.击穿与穿透以及如何解决这几个问题呢?今天我们一起来探讨一下! 一. ...

  7. Redis 5.0.8+常见面试题(单线程还是多线程、先更新缓存还是数据库、雪崩穿透击穿解决办法...)

    Redis 6.0 保姆级教程(含微服务案例与完整面试题):https://www.yuque.com/yuxuandmbjz/redis Redis是单线程还是多线程 ?为什么这么设计 ? Redi ...

  8. 关于缓存雪崩\穿透\击穿等一些问题

    前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透.缓存击穿与失效时的雪崩效应. 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到 ...

  9. 缓存 雪崩 穿透 击穿

    缓存雪崩 原因:缓存雪崩是并发量过大带来的一系列的雪崩效应.大量的请求涌入缓存导致缓存无法处理挂掉,接着大量的请求会涌入数据库导致数据库挂掉. 分析:处理此问题的关键就是避免并发量大的时候缓存不要挂掉 ...

  10. 5redis-----------redis高级--GEO-查询附近的人、基数统计算法HLL 、布隆过滤器、缓存雪崩穿透击穿-------全栈式开发44

    redis高级 一.GEO查询附近的人 二.基数统计算法-HyperLogLog 三.布隆过滤器 四.缓存雪崩&缓存穿透 (一)缓存雪崩 (二)缓存穿透 (三)缓存击穿 一.GEO查询附近的人 ...

最新文章

  1. SQL 2005 中的数据约束
  2. 使用jmeter对ActiveMQ集群性能方案进行评估--转载
  3. 从重采样到数据合成:如何处理机器学习中的不平衡分类问题?
  4. matlab读取xls、xlsx、csv文件
  5. Linux环境下Tomcat部署Solr4.x
  6. POJ1321(KB1-A 简单搜索)
  7. 教程视图Android教程(十三)-- Activity间的切换
  8. [LeetCode]小工具,统计数量,隐藏上锁的题目
  9. DFS(连通块) HDU 1241 Oil Deposits
  10. 【linux基础】cuDNN版本查询
  11. CodeProject 精彩系列
  12. Java IO流经典实例
  13. 【CUDA】解决NVIDIA安装程序失败问题
  14. python用keras库做个股票分析小程序
  15. OpenERP 7.0入门(一):安装及开发环境部署
  16. 树莓派基础实验20:火焰报警传感器实验
  17. vim 删除重复部分的行 vim 技巧
  18. 九、JavaSE-Set接口
  19. [GYCTF2020]Ez_Express
  20. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类

热门文章

  1. 战争升级谷歌限制华为使用android,谷歌“神助攻”!Android12将不支持华为手机,鸿蒙迎来新挑战...
  2. 关于VMware不能上网解决办法
  3. JS 转义字符串中特殊字符
  4. 度晓晓再战高考:百度“AI伙伴”助阵,人均学霸时代来了
  5. outlook恢复本地邮件到服务器
  6. 一个模型就2000?次世代PBR游戏枪械道具建模全流程,学到就是赚到
  7. 03【应届生精准求职】如何准备面试?校招流程,零经验如何面对?看穿面试官背后的套路?面试类型?如何谈薪资?接受或拒绝offer?
  8. NOIP2016提高组day2 天天爱跑步
  9. 抖音多年以后用计算机,那是一个阳光明媚的早上,我做出了在多年以后都会后悔的决定。我要去拔智齿。我去了医院 - 糗事百科...
  10. java语言的主要特点