缓存穿透

一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就去后端系统查找(比如DB)。

一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。

如何避免?

1:对查询结果为空的情况也进行缓存,这样,再次访问时,缓存层会直接返回空值。缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。

2:对一定不存在的key进行过滤。具体请看布隆过滤器

缓存击穿

是针对缓存中没有但数据库有的数据。

场景是,当Key失效后,假如瞬间突然涌入大量的请求,来请求同一个Key,这些请求不会命中Redis,都会请求到DB,导致数据库压力过大,甚至扛不住,挂掉。

解决办法

1、设置热点Key,自动检测热点Key,将热点Key的过期时间加大或者设置为永不过期,或者设置为逻辑上永不过期

2、加互斥锁。当发现没有命中Redis,去查数据库的时候,在执行更新缓存的操作上加锁,当一个线程访问时,其它线程等待,这个线程访问过后,缓存中的数据会被重建,这样其他线程就可以从缓存中取值。

缓存雪崩

是指大量Key同时失效,对这些Key的请求又会打到DB上,同样会导致数据库压力过大甚至挂掉。

解决办法

1)让Key的失效时间分散开,可以在统一的失效时间上再加一个随机值,或者使用更高级的算法分散失效时间。

2)构建多个redis实例,个别节点挂了还有别的可以用。

3)多级缓存:比如增加本地缓存,减小redis压力。

4)对存储层增加限流措施,当请求超出限制,提供降级服务(一般就是返回错误即可)

redis——缓存击穿/穿透/雪崩相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. JAVA从下载到浏览器运行完整篇,写给lewis
  2. html抽取正文内容 c++,如何用C/C++获取html或shtml文件的内容?
  3. 【LeetCode每周算法】零钱兑换
  4. NIO实例:Selector+SocketChannel实现多人聊天
  5. 电脑技巧:这样检查电脑后终于知道为什么越用越卡
  6. 正则数字字母下划线至少两种_8085微处理器中至少两个8位数字
  7. iPhone 13外观四年以来首次改动:真的尽力了
  8. 1000道Python题库系列分享13(22道填空题)
  9. BitMEX将于3月份分批推出DOT、YFI、UNI等六个币种的双币种永续合约
  10. ArcGIS 10.2.2 for Desktop非管理员权限用户连接Oracle12c,崩溃
  11. Spring 框架 基础
  12. c盘local文件太大_win7 c盘清理的方法教程
  13. 大数据技术原理与应用----大数据概述
  14. burp抓取APP数据包+安装Xposed+Just TrustMe
  15. 合群是堕落的开始,优秀是开始的独行!(孤独的自白)
  16. Python利用hadoop Streaming编写的Map-Reduce程序命令运行和本地调试运行
  17. PMP考试中的各种图总结
  18. win11文件后缀名怎么查看 Windows11查看文件后缀的设置方法
  19. 阿里云ACP云计算认证通过总结
  20. C语言模拟银行排队叫号(顺序队)

热门文章

  1. A20 网卡驱动分析
  2. 【转】Dicom 学习笔记-Dicom 消息服务(DIMSE-C/DIMSE-N)
  3. 【转】SQL中where, group by, having的用法和区别
  4. SharePoint Permission中6个表的关联关系**
  5. 新手前端练手网站_编程到底难不难学?新手入门选择哪种语言好?
  6. Spring Boot Actuator监控关闭
  7. CCNA-第九篇-OSPF下+VLAN开篇初介绍
  8. 【HDU - 5091】Beam Cannon(线段树,扫描线)
  9. 【POJ - 2785】4 Values whose Sum is 0 (二分,折半枚举)
  10. 【CodeForces - 1038B 】Non-Coprime Partition (构造,数组特征)