文章目录

  • 前言
  • 缓存雪崩
  • 缓存穿透
  • 缓存击穿
  • 传送门

前言

redis服务雪崩、穿透、击穿

缓存雪崩

缓存雪崩表示在某一时间段,缓存集中失效,导致请求全部进入数据库,过量请求拖垮数据库,使整个服务崩溃。

缓存失效的原因:

  • 雪崩就是指缓存中大批量热点数据过期后,当系统发生大量请求,因为redis数据的失效,导致请求全部进入到数据库导致数据库查询阻塞而宕机
  • redis服务宕机

解决办法:

  1. 让redis数据永不过期,这种方法最可靠和安全,但是会占用内存空间,数据也不能保证最新,所以需要根据具体的业务逻辑来做。
  2. 将缓存失效时间分散开,比如每个key的过期时间都可以随机的,防止同一时间大量过期的现象发生,就不会出现同一时间全部请求都去到数据库。
  3. 因为redis宕机导致缓存雪崩的问题,启动服务熔断机制,暂停业务应用对缓存服务的访问,直接快速失败(返回错误),但是暂停了应用访问缓存系统,全部业务都无法正常的工作
  4. 创造redis集群,对数据库进行读写分离

缓存穿透

缓存穿透是指用户不断的发起请求访问缓存和数据库中都没有数据,比如发起id为负数和很大的数据(数据库中不存在),这时的请求每次都会落入到数据库,就可能导致数据库宕机。
解决方法:

  1. 接口层添加校验,如用户鉴权校验;id基础校验,指定接口的请求方法,只接受一种或几种的请求方式
  2. 对缓存取不到的数据,在数据库中也没有取到,这时可以将key-value写成key-null,缓存有效期可以设置为30秒(设置过长会导致正常情况下也无法使用),这样可以防止攻击用户反复用同一个id暴力攻击
  3. 布隆过滤器

缓存击穿

业务通常会有几个数据被频繁的访问,这类被频繁访问的数据称为热点数据
如果缓存中的某个热点数据过期了,此时大量的请求访问了该热点数据,无法从缓存中读取,直接访问数据库,数据库很容易被大量的请求冲垮
解决办法

  1. 互斥锁,保证同一个时间只有一个线程更新缓存,未获取互斥锁的请求,要么等待锁的释放重新读取数据,要么就返回空值或者默认值。
  2. 不给热点数据设置过期时间,由后台异步更新缓存,或者热点数据在过期前,提前通知后台线程更新缓存以及重新设置过期时间。

传送门

springboot基础(71):布隆过滤器的应用

redis雪崩、穿透、击穿相关推荐

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

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

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

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

  3. 老生常谈的 Redis 雪崩、击穿、穿透、预热、降级一次全安排

    △Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 348 篇原创分享 作者 l zyz1992 来源 l Hollis(ID:hollischuang) 关于 Redis ...

  4. Java面试核心知识:Redis 雪崩、击穿、穿透、预热、降级,一文带你全部学会

    文章目录 Java面试核心知识点 Spring原理及应用 spring CIoud原理及应用 Netty网络编程原理及应用 Zookeeper原理及应用 kafka原理及应用 Hadoop原理及应用 ...

  5. Redis缓存穿透击穿雪崩

    目录 1.缓存穿透 2.缓存击穿 3.缓存雪崩 1.缓存穿透 概述: 缓存穿透的概念很简单,用户想要査询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库査询.发现也数据库 ...

  6. Redis缓存穿透击穿和雪崩(八)

    1. 缓存穿透 1.1. 定义 如果用户的请求Redis缓存没有,mysql持久层也没有这个数据,于是本地查询失败.当用户请求很多(或者恶意攻击)且都是这种缓存和持久层都没有命中的情况时,大量的请求持 ...

  7. Redis缓存/穿透/击穿/雪崩

    目录 1 缓存穿透 1.1 问题描述 1.2 产生原因 1.3 解决方案 2 缓存击穿 2.1 问题描述 2.2 解决方案 3 缓存雪崩 3.1 问题描述 3.2 解决方案: 1 缓存穿透 1.1 问 ...

  8. 一文搞懂Redis缓存穿透/击穿/雪崩

    缓存穿透 问题描述 缓存穿透是指查询一个一定不存在的数据,由于缓存时不命中的,则需要从数据库中查询.查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库中去查询,进而增大了数据库的压力 ...

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

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

  10. 缓存 雪崩 穿透 击穿

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

最新文章

  1. linux内核模块配置,如何为linux内核模块开发配置clang_complete?
  2. 英文环境下中文输入法的设置
  3. Netty入门(一)环境搭建及使用
  4. Spring——IOC(控制反转)
  5. java注释修改_java – 使用注释修改方法
  6. 修改hosts文件并保存
  7. Linux教程+操作系统教程
  8. springboot test
  9. matplotlib 绘制直方图和拟合正态曲线
  10. 计算机控制人脑的电影,推荐20部全球经典烧脑电影,考验你智商的时刻到了(上)...
  11. 命令方块召唤别墅指令_我的世界:如何在MC召唤实体303?告示牌的数字,才是关键!...
  12. Python学习week5
  13. vue 后台系统中多页面标签
  14. 薪资待遇#23届#海尔#嵌入式软件
  15. Android OnDeviceAppPrediction 优化
  16. incremental learning(增量学习是什么意思)
  17. C语言学习记录(猜数游戏)
  18. [阅读记录]《数据分析师求职面试指南》-2
  19. 单片机编程软件很简单(22),keil单片机编程软件优化等级+概念解析
  20. 【Python代码基础(符号篇2)】

热门文章

  1. 2017上海国际清洁技术与设备博览会会刊(参展商名录)
  2. Scrum的基本功 - 集合中英文版本 (Scrum事件)
  3. 女性安全期测试--亏作者想得出来
  4. 第一批被AI淘汰的人已经出现,你距离失业还有多远?
  5. mysql dump一张表_如何用mysqldump单独导出一张表
  6. 《uni-app》uni-app实现疯狂点赞效果(二) 封装与优化
  7. 介入治疗为肿瘤治疗带来生机
  8. Django项目中使用plupload插件实现上传图片功能
  9. oracle当前时间减去记录的生成时间差值计算
  10. 怎么通过路由器设置虚拟服务器,通过路由器如何设置虚拟服务器