1、缓存穿透:

(1)问题描述:key对应的数据并不存在,每次请求访问key时,缓存中查找不到,请求都会直接访问到数据库中去,请求量超出数据库时,便会导致数据库崩溃。如一个用户id不存在,数据库与缓存都不存在该id,此时黑客便可以利用此漏洞不断访问该id,造成数据库崩溃。

(2)解决方法:

①对空值缓存:如果一个查询数据为空(不管数据是否存在),都对该空结果进行缓存,其过期时间会设置非常短。

②设置可以访问名单:使用bitmaps类型定义一个可以访问名单,名单id作为bitmaps的偏移量,每次访问时与bitmaps中的id进行比较,如果访问id不在bitmaps中,则进行拦截,不给其访问。

③采用布隆过滤器:布隆过滤器可以判断元素是否存在集合中,他的优点是空间效率和查询时间都比一般算法快,缺点是有一定的误识别率和删除困难。

④进行实时监控:对于redis缓存中命中率急速下降时,迅速排查访问对象和访问数据,将其设置为黑名单。

2.缓存击穿:

(1)问题描述:key中对应数据存在,当key中对应的数据在缓存中过期,而此时又有大量请求访问该数据,缓存中过期了,请求会直接访问数据库并回设到缓存中,高并发访问数据库会导致数据库崩溃。

(2)解决方案:

①预先设置热门数据:在redis高峰访问时期,提前设置热门数据到缓存中,或适当延长缓存中key过期时间。

②实时调整:实时监控哪些数据热门,实时调整key过期时间。

③对于热点key设置永不过期。

3、缓存雪崩·:

(1)问题描述:key中对应数据存在,在某一时刻,缓存中大量key过期,而此时大量高并发请求访问,会直接访问后端数据库,导致数据库崩溃。

注意:缓存击穿是指一个key对应缓存数据过期,缓存雪崩是大部分key对应缓存数据过期

正常访问下如图:

缓存失效瞬间如下图:

(2)解决方法:

①构建多级缓存机制:nginx缓存+redis缓存+其他缓存。

②设置过期标志更新缓存:记录缓存数据是否过期,如果过期会触发另外一个线程去在后台更新实时key的缓存。

③将缓存可以时间分散:如在原有缓存时间基础上增加一个随机值,这个值可以在1-5分钟随机,这样过期时间重复率就会降低,防止大量key同时过期。

④使用锁或队列机制:使用锁或队列保证不会有大量线程一次性对数据库进行读写,从而避免大量并发请求访问数据库,该方法不适用于高并发情况。

---------------------
作者:后端小猿
来源:CSDN
原文:https://blog.csdn.net/weixin_50616848/article/details/123939734
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

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

  1. redis——缓存击穿/穿透/雪崩

    缓存穿透 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就去后端系统查找(比如DB). 一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力.这就叫 ...

  2. 面试常问:redis缓存击穿/穿透/雪崩

    1. 讲个故事 一个人去门店买联想电脑,线下门店没有货了,于是店员给厂家打电话问问有没有货,厂家发现也没货了,这个人就走了.过了一会另一个人也要来买联想电脑,然后店员又打电话问了一次厂家,如此反复.这 ...

  3. 你需要知道的缓存击穿/穿透/雪崩

    目录 缓存击穿/穿透/雪崩 Intro 缓存击穿 缓存穿透 缓存雪崩 Reference Contact 缓存击穿/穿透/雪崩 Intro 使用缓存需要了解几个缓存问题,缓存击穿.缓存穿透以及缓存雪崩 ...

  4. 缓存击穿/穿透/雪崩

    缓存击穿/穿透/雪崩 Intro 使用缓存需要了解几个缓存问题,缓存击穿.缓存穿透以及缓存雪崩,需要了解它们产生的原因以及怎么避免,尤其是当你打算设计自己的缓存框架的时候需要考虑如何处理这些问题. 缓 ...

  5. Redis缓存击穿、雪崩、穿透!(超详细)

    缓存的击穿.穿透和雪崩应该是再熟悉不过的词了,也是面试常问的高频试题. 不过,对于这三大缓存的问题,有很多人背过了解决方案,却少有人能把思路给理清的. 而且,网络上仍然充斥着,大量不太靠谱的解决方案, ...

  6. Redis数据读取(缓存击穿,穿透,雪崩)

    内容文件参考"付费专栏"可领取.专栏购买者提供本内容"永久答疑和远程协助"服务.一诺千金! N.1 缓存处理流程 1)前台请求,后台先从缓存中取数据,取到直接返 ...

  7. Redis 缓存击穿,缓存穿透,缓存雪崩原因+解决方案

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

  8. Redis缓存知识-穿透、击穿、雪崩

    目录 一.Redis介绍 二.Redis做缓存服务器 三.缓存穿透&击穿&雪崩 1.缓存穿透 2.缓存击穿 3.缓存雪崩 大家好,我是杨叔.每天进步一点点,关注我的微信公众号[程序员杨 ...

  9. Redis缓存击穿,穿透,雪崩等问题

    雪崩(随机过期时间.永不过期). 穿透(表示恶意请求,在系统端判断是否符合规则,比如id<0,布隆过滤器). 击穿(查询加for update,永不过期) redis缓存穿透:查询一个数据库中不 ...

  10. Redis缓存击穿,缓存穿透,缓存雪崩,附解决方案

    前言 在日常的项目中,缓存的使用场景是比较多的.缓存是分布式系统中的重要组件,主要解决在高并发.大数据场景下,热点数据访问的性能问题,提高性能的数据快速访问.本文以Redis作为缓存时,针对常见的缓存 ...

最新文章

  1. SLAM前端中的视觉里程计和回环检测
  2. 51NOD 1773:A国的贸易——题解
  3. 前后端分离中使用基于jwt的token进行身份认证
  4. Linux下的常用软件列表
  5. CVPR2021|引入记忆模块,突破长距离依赖视频预测的性能瓶颈
  6. 【OpenCV】OpenCV函数精讲之 -- copyTo()函数及Mask详解(附代码详解)
  7. 如何卸载 Internet Explorer 7
  8. 难得一见的DIY针孔相机
  9. mac上利用minikube搭建kubernetes(k8s)环境
  10. 一个用于分布式DNN训练加速的通用通信调度器
  11. VLAN中tagged与untagged的处理(转)
  12. python微积分求面积_用Python学微积分(微积分应用)
  13. Delphi XE5应用开发支持的安卓设备
  14. android 即时通讯技术,基于Android即时通讯系统的设计与实现
  15. 螳螂有6条腿C语言,一只蜈蚣40只脚,一只螳螂有6只脚,现有蜈蚣和螳螂共35只,合计脚822只,蜈蚣和螳螂各多少只?...
  16. 【你问我答】不包装简历是不是面试机会都没有?
  17. 社保已经交够15年了,还需要再交吗?到退休年龄时可以退休吗?
  18. CentOS/使用RPM管理包
  19. 【技术点】数据结构(六) -- 哈希表
  20. 安卓6.0版本后出现的语音开启失败问题,错误码20006

热门文章

  1. C#多线程开发-任务并行库
  2. 跟几个程序员聊了聊他们的每月薪资收入
  3. 以IP段作为监听地址
  4. MIPS投RISC-V是龙芯新征程的开始
  5. C#-WinForm跨线程修改UI界面
  6. 进击吧!Blazor!第一期回顾
  7. IT技术人,“三十而已”
  8. 谷歌提议更改Istio指导委员会
  9. 基于 abp vNext 和 .NET Core 开发博客项目
  10. 如何在.NET应用程序中分析CPU使用率过高的问题