前言:
使用缓存的主要目的是为了提高系统的响应速度、减轻数据库的压力。那么一个正常的缓存流程是怎样的呢,看下如下步骤:
1、用户发起查询请求
2、请求来到redis缓存,在缓存中查询到了数据,将缓存中查询到的数据返回给用户
3、缓存中不存在则到数据库查询,返回给用户
4、把数据库中查询到的数据写入缓存,以后后续查询使用

一、缓存雪崩
1、什么是缓存雪崩?
例如每年双十一,全国大量用户访问某电商平台,这个时候 redis 里面的热点 key 大量同一时间失效,导致这个平台直接访问数据库,把大量的请求都打到数据库,这种现象就是缓存雪崩。
简单来说就是 redis 缓存大量 key 在同一时间失效,就像这个雪崩来了一样

2、解决方案
【1】在设置这个缓存的时候,可以将 key 的失效时间分散开,不让大量的 key 在同一时间失效
【2】还有就是比较暴力的方法,不设置这个缓存失效的时间,让 key 永不失效,或者将 key 的过期时间设置的较长

二、缓存穿透
1、什么是缓存穿透?
【1】大家都知道数据表主键一般都是从1开始的增量正数,或是特殊算法生成的字符串,这种情况下如果有恶意攻击发起请求,查询 where id = -1、-2、-3、... 这样的数据,缓存中肯定是没有这样数据的,就到数据库里面查询,也没有查到该条数据,只能返回空数据给前端了
【2】如果某个恶意用户用脚本不断的发这样的请求,直接穿透 redis 打到数据库上,那么所有请求都会打到数据库,而且会一直打到数据库中去,因为 redis 缓存这层根本拦截不到这样的数据,这就是所谓的缓存穿透
【3】简单来说,缓存穿透就是指缓存中没有查询的数据,缓存拦截不到,请求都打到了数据库上

2、解决方案
【1】对请求的参数做合法性校验
【2】数据库无论查出什么结果(无论为不为空),都写入 redis 缓存里面,这样下次用同一个参数发来请求的时候,就直接被 redis 缓存拦截掉了,就不回打到数据库了
【3】使用布隆过滤器,这是一个非常好的方式

三、缓存击穿
1、什么是缓存击穿?
某一个非常热点的 key,在大量的用户请求不断的访问这个热点的 key,当这个热点的 key 突然失效,把请求都打到数据库上,这个过程就是叫做缓存击穿。记住它是击穿某个一个非常热点的 key

2、解决方案
【1】设置这个热点 key 不过期,即不设置失效时间(不推荐)
【2】使用分布式锁,如果是单体应用使用互斥锁

总结:
缓存雪崩:是指大量的缓存热点 key,在同一时间大量的失效,海量请求打到数据库
缓存穿透:是指 redis 缓存里没有查询到想要的数据,直接穿过 redis 打到数据库了
缓存击穿:是指某个一个非常热点的 key,大量的用户去请求这个缓存热点 key,当这个缓存 key 突然失效的时候,这些请求都会打到数据库上

Redis缓存的雪崩、穿透、击穿相关推荐

  1. redis缓存的雪崩、击穿、穿透,淘汰策略,持久化

    1.redis缓存的雪崩.击穿.穿透,在实际中如何处理? 雪崩:缓存不存在,数据库存在,高并发,大量的key 原因:大量数据同时过期,Redis宕机 解决方案:给缓存数据的过期时间上加上小的随机数,避 ...

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

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

  3. Java --- redis7之缓存预热+雪崩+穿透+击穿

    目录 一.缓存预热 二.缓存雪崩 三.缓存穿透 3.1.解决方案 3.1.1.空对象缓存或者缺省值 3.1.2.Goolge布隆过滤器Guava解决缓存穿透 四.缓存击穿 4.1.危害 4.2.解决方 ...

  4. 缓存的雪崩,击穿,穿透

    缓存的雪崩,击穿,穿透 前言 在将今天的内容之前,我们先来了解一下什么是缓存,缓存是用来干什么的,常用的缓存有哪些? 什么是缓存 我们要知道缓存其实就是一个临时的存储器,那么缓存里的数据就不是持久化的 ...

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

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

  6. 今天带你们走进缓存的雪崩、击穿、穿透基本概念

    在互联网时代,大流量.海量数据.高并发是每个企业都渴望又害怕的名词,渴望是因为它们代表着提供的服务用户愿意买单.有价值;害怕是因为一旦用户全上来了,系统不能正常为用户提供服务,让用户失望,最终选择离开 ...

  7. 缓存 雪崩 穿透 击穿

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

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

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

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

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

最新文章

  1. Error:java: JDK isn't specified for module 'bvisioncloud'
  2. webpack4.x加vue模板文件简单还原vue-cli
  3. elasticsearch安装与基础用法
  4. python之路2.0_Python之路【第二十一篇】:JS基础
  5. pycharm之no python interpreter configured for project的解决办法
  6. 如何在数字化转型战略中真正获得价值?浅谈数字化转型的四个层级
  7. [Usaco2005 nov]Grazing on the Run 边跑边吃草 BZOJ1742
  8. windows开启ping功能
  9. 日常开发需要掌握的Maven知识
  10. 【探索PowerShell 】【二】基本操作
  11. 利用MTviz绘制线粒体基因组结构图
  12. 微信订阅号和服务号的区别
  13. 证书服务器,及申请证书。
  14. 互联网装修O2O模式是否可行?
  15. 灵魂讲师分享的:po是什么?自动化测试po分层如何实现?-带po详细源代码
  16. gophish企业内部钓鱼邮件测试
  17. 拍好的视频如何添加配乐
  18. SOUI的配置和使用
  19. qs美国排名计算机专业,2016年QS美国大学计算机科学专业排名
  20. 手把手教你编译RS GIS开源库(一)编译ECW3.3库

热门文章

  1. NopCommerce 在Category 显示Vendor List列表
  2. 达达-京东到家面试总结
  3. 无法获得递归Range.Find在Word VBA中工作
  4. 将电脑通达信条件预警同步到手机
  5. 如何将彩色文本打印到终端?
  6. 详细的网络安全基础,一篇文章统统告诉你
  7. 乐视账号服务器关闭,乐视手机重置后无法登录账号 官方给出解决方案
  8. 查看linux下oracle安装位置
  9. 求求你,商用项目不要再使用jsdelivr的CDN服务了
  10. mysql查询学生平均成绩及其名次_sql 统计 学生成绩2