缓存穿透怎么导致的?

在高并发下查询key不存在的数据,会穿过缓去存查询数据库。导致数据库压力过大而宕机。
解决方法:

  1. 对查询结果为空的情况也进行缓存,缓存时间(ttl)设置短一点,或者该key对应的数据insert了之后清理缓存。
    缺点:缓存太多空值占用了更多的空间
  2. 使用布隆过滤器。在缓存之前在加一层布隆过滤器,在查询的时候先去布隆过滤器查询 key 是否存在,如果不存在就直接返回,存在再查缓存和DB。

布隆过滤器原理: 当一个元素被加入集合时,将这个元素通过n次Hash函数结果映射成一个数组中的n个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能在。总之布隆过滤器是一个很大二进制的位数组,数组里面只存0和1。

2021-05-14 Redis面试题 缓存穿透怎么导致的?相关推荐

  1. 【Redis笔记】缓存穿透与缓存击穿以及应对方法

    [Redis笔记]缓存穿透与缓存击穿以及应对方法 一.缓存穿透 1. 缓存穿透概念 2. 缓存穿透解决方法 示例代码 二.缓存击穿 1. 缓存击穿概念 2. 缓存击穿解决方法 方法一:互斥锁 示例代码 ...

  2. Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁)

    Redis应用问题解决(缓存穿透.击穿.雪崩.分布式锁) 缓存穿透 问题描述 当系统中引入redis缓存后,一个请求进来后,会先从redis缓存中查询,缓存有就直接返回,缓存中没有就去db中查询,db ...

  3. Redis学习之缓存穿透、缓存击穿和缓存雪崩详解

    目录 缓存穿透 解决方案 缓存空对象 布隆过滤器 缓存击穿 解决方案 对访问数据库的操作加锁 提前缓存热点数据,设置热点数据永不过期 缓存雪崩 解决方案 Redis高可用 限流降级 数据预热 设置合理 ...

  4. Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(详解)

    一.概述 ① 缓存穿透:大量请求根本不存在的key(下文详解) ② 缓存雪崩:redis中大量key集体过期(下文详解) ③ 缓存击穿:redis中一个热点key过期(大量用户访问该热点key,但是热 ...

  5. Redis 6.x 缓存穿透

    key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源.比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻 ...

  6. 译 | 缓存穿透问题导致Facebook史上最严重事故之一

    点击关注公众号,Java干货及时送达 How a Cache Stampede Caused One of Facebook's Biggest Outages 2010年9月23,这个世界上最大的社 ...

  7. (更新时间)2021年5月12日 redis数据库 Redis面试题

    Redis高频面试题 文章目录 Redis高频面试题 1.什么是Redis?简述它的优缺点? 2.Redis相比memcached有哪些优势? 3.Redis支持哪几种数据类型? 4.Redis主要消 ...

  8. redis缓存雪崩和缓存穿透

    转载自 https://www.cnblogs.com/sanday/p/7877693.html 缓存雪崩:由于原有的缓存过期失效,新的缓存还没有缓存进来,有一只请求缓存请求不到,导致所有请求都跑去 ...

  9. mybatis+redis实现分布式缓存+缓存面试题

    一,mybatis缓存机制 mybatis提供了一级.二级缓存. 一级缓存:线程级别的缓存,也称为本地缓存或sqlSession级别的缓存,一级缓存是默认存在的,同一个会话中,查询两次相同的操作就会从 ...

最新文章

  1. Centos 7 添加新磁盘
  2. Dubbo官方的Starter发布1.0.0测试版,与Spring Boot的结合将更加自然
  3. 【干货】美拍App是如何9个月做到用户过亿的
  4. 【SpringBoot】 启动时,修改默认配置文件名称
  5. springmvd接收参数问题
  6. iOS加入百度地图的几个问题
  7. c# 用空格分割字符串_C#| 左用空格填充字符串
  8. 编程语言分类 -- 强类型与弱类型、动态类型与静态类型
  9. python接口自动化(九)--python中字典和json的区别(详解)
  10. Python风格总结:ASCII码与字符相互转换
  11. Windows10 右键“打开文件所在位置”找不到应用程序
  12. Java Servlet系列之Servlet入门
  13. 微信批量扫码进群系统
  14. iOS 13 苹果登录实践 Sign In with Apple
  15. 鲁四海解读中国大数据发展10大趋势5大挑战
  16. Contest1389 - 2018年第三阶段个人训练赛第四场. Transit Tree Path(DFS)
  17. docker容器内开启22 ssh_细述docker容器中创建SSH服务镜像
  18. Android自定义View2--触摸事件传递机制
  19. npm start运行成功界面,及网址运行界面
  20. lu分解 matlab课件,LU分解与部分旋转Matlab

热门文章

  1. 微信上制作投票链接在线制作投票链接如果制作投票链接
  2. android 本地html传递参数,Android WebView适配html加载本地文件并上传
  3. sklearn机器学习:随机森林回归器RandomForestRegressor
  4. 杰里之Linein api 数据结构【篇】
  5. i512500h和i710875h哪个好
  6. MySQL记录删除后竟能按中间被删除的主键加回去,磁盘空间被重用!
  7. 微信小程序——小程序开发经验总结(持续更新)
  8. UBTC比特联储重要升级,千万别错过
  9. 戴尔INSPIRON 14-7472 DDH40 DDH50 LA-F251P r1.0笔记本图纸
  10. python陆股通_陆股通什么意思(陆股通买入后会涨吗)