企业级解决方案

快速入门Redis的文章,传送地址:Redis基础知识

文章目录

  • 企业级解决方案
    • 1. 缓存预热
    • 2. 缓存雪崩
    • 3. 缓存击穿
    • 4. 缓存穿透

1. 缓存预热

场景:

服务器启动后迅速宕机

问题排查:

  1. 请求数量较高,大量的请求过来之后都要从缓存中获取数据,但是缓存中又没有,从数据库中查找数据后将数据再存入缓存,造成了短期内对redis的高强度操作
  2. 主从之间数据吞吐量较大,数据同步操作频度较高

解决方案:

为了防止用户访问的时候Redis中没有数据,所以提前将热点数据保存到Redis里面(通过LRU数据删除策略,可以得到高频数据队列),通过脚本的方式将热点数据提前加入。

2. 缓存雪崩

场景:

  1. 系统平稳运行过程中,忽然数据库连接量激增
  2. 应用服务器无法及时处理请求,大量408,500错误页面出现
  3. 客户反复刷新页面获取数据,导致请求加剧
  4. 数据库崩溃 → 应用服务器崩溃
  5. 重启应用服务器无效 → Redis服务器崩溃 → Redis集群崩溃
  6. 重启数据库后再次被瞬间流量击倒

问题排查:

  1. 在一个较短的时间内,缓存中较多的key集中过期,所有的请求都去访问数据库
  2. 数据库同时接收到大量的请求无法及时处理,数据库流量激增,数据库崩溃
  3. Redis大量请求被积压,开始出现超时现象
  4. 重启后仍然面对缓存中无数据可用 → Redis服务器崩溃 → 集群瓦解
  5. 应用服务器无法及时得到数据响应,来自客户端的请求数量越来越多,应用服务器崩溃
  6. 应用服务器,redis,数据库全部重启后,效果仍不理想

总而言之就是:短时间范围内,大量key集中过期

解决方案:

  1. LRU与LFU切换,尽量去淘汰访问频度低的数据,访问频度比较低的数据即使淘汰了,也不会造成大量

  2. 数据有效期策略调整:

    2.1 根据业务数据有效期进行分类错峰

    2.2 过期时间使用 固定时间+随机值 的形式,稀释集中到期的key的数量

  3. 超热数据使用永久key,并定期人工维护:对即将过期数据做访问量分析,确认是否延时,配合访问量统计,做热点数据的延时

总结:

缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如能够有效避免过期时间集中,可以有效解决雪崩现象的出现。

3. 缓存击穿

场景:

  1. 系统平稳运行过程中,数据库连接量瞬间激增

  2. Redis服务器无大量key过期,Redis内存平稳,无波动,服务器CPU正常

  3. 数据库崩溃

问题排查:

  1. Redis中某个key过期,并且该key访问量巨大

  2. 大量数据请求在Redis中均未命中,Redis在短时间内发起了大量对数据库中同一数据的访问

总而言之就是:单个高热数据key过期

解决方案:

  1. 预先设定:比如购物网站,对热点商品要加大此类key的过期时长
  2. 现场调整:监控访问量,对自然流量激增的数据延长过期时间或设置为永久性key
  3. 后台刷新数据:启动定时任务,高峰期来临之前,刷新数据有效期,确保不丢失
  4. 二级缓存:设置不同的失效时间,保障不会被同时淘汰

总结:

缓存击穿就是单个高热数据过期的瞬间,数据访问量较大,未命中redis后,发起了大量对同一数据的数据库访问,对数据库服务器造成压力。应对策略应该在业务数据分析与预防方面进行,配合运行监控测试与即时调整策略。

4. 缓存穿透

场景:

  1. 系统平稳运行过程中,应用服务器流量随时间逐渐增大

  2. Redis服务器命中率随时间逐步降低

  3. Redis内存平稳,内存无压力,但Redis服务器CPU占用激增

  4. 数据库服务器压力激增 → 数据库崩溃

问题排查:

  1. Redis中出现大面积未命中

  2. 出现非正常URL访问,也就是说访问的这个key压根就不存在,Redis中不存在,数据库中也不存在

问题分析:

  • 获取的数据在数据库中不存在,数据库查询未得到对应的数据
  • Redis获取到null数据,null数据未进行持久化,直接返回
  • 下次此类数据到达,重复上述过程,大量的请求直接到了数据库
  • 出现缓存穿透一般是出现黑客攻击服务器的情况

解决方案:

  1. 可以在最外层先做一层校验:用户鉴权、数据合法性校验等,例如商品查询中,商品的ID是正整数,则可以直接对非正整数直接过滤等等
  2. 缓存null:Redis对查询结果为null的数据进行缓存,但是这种方式效果十分有限,会导致Redis中缓存了无用的null值,占用空间
  3. 布隆过滤器,详见 博客 / 文档

总结:

缓存穿透是指访问了不存在的数据,跳过了redis数据缓存阶段,每次都会访问数据库,导致对数据库服务器造成压力。应对策略应该在临时预案防范方面多做文章。

Redis缓存预热 缓存雪崩 缓存击穿 缓存穿透相关推荐

  1. Redis并发问题(雪崩、击穿、穿透)

    前言 Redis作为目前最火的NoSQL数据库,在大量互联网企业作为重要的核心技术,Redis作为数据库的缓存,在高并发情况下也会出现各种问题,下面我们来了解这些问题以及解决方案,这些也是程序员面试时 ...

  2. 【Redis】聊一下缓存雪崩、击穿、穿透、预热

    缓存的引入带来了数据读取性能的提升,但是因此也引入新的问题,一个是数据双写一致性,另一个就是雪崩.击穿.穿透,那么如何解决这些问题,我们来说下对应的问题和解决方案 雪崩 缓存雪崩:同一时间内大量请求无 ...

  3. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

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

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

  5. 阿里面试Redis最常问的三个问题:缓存雪崩、击穿、穿透(带答案)

    你知道的越多,你不知道的越多 点赞再看,养成习惯 https://github.com/java-已经开源,有面试脑图 正文 上一期吊打系列我们提到了Redis的基础知识,还没看的小伙伴可以回顾一下 ...

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

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

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

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

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

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

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

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

  10. Redis中的缓存雪崩、击穿、穿透的原因以及解决办法

    缓存雪崩.击穿.穿透一旦发生,会导致大量的请求积压到数据库层.如果请求的并发量很大,就会导致数据库宕机或是故障,这就是很严重的生产事故了. 俗话说,知己知彼,百战不殆.了解了问题的成因,我们就能够在应 ...

最新文章

  1. NYOJ 641 摧毁网络
  2. python新手入门项目推荐_推荐:一个适合于Python新手的入门练手项目
  3. adf4351使用_ADF:将UI类别与动态表单一起使用
  4. 数据分析-书籍整理(二)
  5. mysql删除中继日志_mysql 中继日志删除可以自动获取吗
  6. 卷积编码verilog实现
  7. jquery中的ajax写法
  8. 定性分析PK定量分析:情敌还是战友?
  9. java 编辑器_推荐 5 款牛逼的代码编辑器
  10. Ts的infer类型推导
  11. 安卓手机管理_北斗ERP进销存管理(销存管理工具)V2.2.4 安卓手机版
  12. 如何把一个app导入另一个app?教你快速解决!
  13. 用html设计一个时间距离查询,使用HTML5 Geolocation实现一个距离追踪器
  14. Pytorch 学习率衰减 之 余弦退火与余弦warmup 自定义学习率衰减scheduler
  15. 全球及中国食品级隔膜泵行业需求分析与发展战略规划研究报告2022-2028年
  16. 论文阅读5 | Recent Advances in Data-Driven Wireless Communication Using Gaussian Processes: A Comprehens
  17. 大数据运作原理是什么?
  18. 【期末复习】电子商务(南邮考后总结版)
  19. 9008刷机模式写入超时刷机帮_高通9008刷机大法,避坑指南,救砖前提
  20. 索引、单列索引、复合索引、主键、唯一索引、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系

热门文章

  1. Batch Normalization函数详解及反向传播中的梯度求导
  2. 时间的换算(时、分、秒、毫秒、微秒、纳秒)
  3. 曾梦想仗剑走天涯,看世界的繁华
  4. DAO组织应当如何有效进行资金管理? |链捕手
  5. 读王立群《千古一帝秦始皇》有感
  6. HTML555---表格和表单
  7. ThinkPHP学习(4)——开启FTP
  8. 超强的性暗示广告欣赏[组图](转载)
  9. Centos6.5安装配置mongodb3.4
  10. 计算机三维造型 试题,计算机三维建模(3DMAX)复习题.doc