首页 > 其他分享 >面试题:缓存穿透,缓存击穿,缓存雪崩

面试题:缓存穿透,缓存击穿,缓存雪崩

时间:2024-06-14 09:02:06浏览次数:20  
标签:面试题 缓存 请求 过期 DB 查询 雪崩 key

1 穿透: 两边都不存在(皇帝的新装)

——简介:缓存穿透指的是恶意用户或攻击者通过请求不存在于缓存和后端存储中的数据来使得所有请求都落到后端存储上,导致系统瘫痪。

——详述:(缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。)

解决方法:设置黑名单,(黑名单机制:在特定场景下,维护一个可能存在或不存在的数据列表,对查询请求进行过滤。【常用】)

使用布隆过滤器,(缺点:会出现误删;有一定的误判率;由于错误率影响hash函数的数量,当hash函数越多,每次插入、查询需做的hash操作就越多) 

2 穿:一个热点的key失效了,这时大量的并发请求直接到达数据库.  

 ——简介:缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

解决方法:提前预热:缓存预热是指在系统启动或者高峰期之前,提前将数据加载到缓存中,避免在用户请求的时候,先查询数据库(这样第一个查询的人就会比较慢),再把查询结果回写到redis当中去。 

3 雪崩:大量key同时失效

——简介:缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。

 

解决方法:避免缓存失效时间集中(错峰):常用且易于实现通过使用自动生成随机数使得key的过期时间TTL是随机的,防止集体过期。或者设置缓存标记,即热点数据可以不考虑失效,后台异步更新缓存,适用于不严格要求缓存一致性的情景。 

 

标签:面试题,缓存,请求,过期,DB,查询,雪崩,key
From: https://blog.csdn.net/ughbnbjkk/article/details/139610357

相关文章

  • 注册用户如何防止缓存穿透?
    注册用户如何防止缓存穿透?先说明用户注册为什么会发送缓存穿透:用户注册时,需要验证用户名是否已存在,先查缓存,没有再查数据库,还没有才验证通过。高并发的情况下就可能有大量用户同时注册,或有恶意请求(因为注册是不设限的),造成缓存穿透。常见的解决方案有哪些?所以,在用户注册场......
  • 【云岚到家】-day03-2-门户缓存实现实战
    【云岚到家】-day03-2-门户缓存实现实战5缓存实现5.2定时任务更新缓存5.2.1分布式调度平台5.2.1.1jdk提供的Timer定时器5.2.1.2使用第三方Quartz方式5.2.1.3使用分布式调度平台XXL-JOB5.2.2XXL-JOB5.2.2.1介绍5.2.2.2部署调度中心5.2.2.3执行器5.2.2定义缓......
  • 详细描述MyBatis缓存的实现原理?
    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和映射原始类型、接口和Java的POJO(PlainOldJavaObjects,普通的Java对象)为数据库中......
  • 公司面试题总结(五)
    25.谈一谈箭头函数与普通函数的区别,箭头函数主要解决什么问题?箭头函数与普通函数的区别:⚫语法简洁性:◼箭头函数使用=>符号定义,省略了function关键字,使得语法更为紧凑。◼对于单行函数体,可以进一步简化,省略花括号和return语句。⚫词法作用域内的this:......
  • WordPress、Typecho 站点如何让 CloudFlare 缓存加速
    众所周知WordPress、Typecho都是著名动态博客站点(一个最简单的判断依据就是都要依赖结合数据库),这类站点在CDN缓存上都有一个致命的缓存弊端就是动静态请求的区分,理论上要让CDN绕过所有的动态请求,缓存所有的静态请求,否则就会造成前端登录和非登录状态的混乱,影响用户浏览体......
  • linux清理缓存
    当cache缓存占用太大,服务起不来,需要查看清理缓存执行free-m或者free-h,查看缓存释放缓存区内存的方法(请注意,以下操作需要root权限)建议在清理缓存之前先备份重要数据,以免发生意外情况。1、清理磁盘缓存刷新文件系统缓存,将缓存中的数据写入磁盘。sync清理页缓存。这将清......
  • 动态选择4种库存更新策略+缓存预热+多级存储结构——应对高并发秒杀情景和其他多种情
    商城整体功能架构图文字分析:活动入口进行风控检测,这个使用独立的服务来实现,风控使用批量提交的形式来实现,直接运用Java线程池来实现,可以提交一个列表来实现批量,可以参考以下的代码创建批量请求并且进行提交:importjava.util.ArrayList;importjava.util.List;publi......
  • 赶紧收藏!2024 年最常见 20道并发编程面试题(二)
    上一篇地址:赶紧收藏!2024年最常见20道并发编程面试题(一)-CSDN博客三、请解释线程和进程的区别线程(Thread)和进程(Process)是操作系统中用于执行程序和分配系统资源的两个基本概念。它们之间有几个关键的区别:定义:进程:进程是操作系统进行资源分配和调度的一个独立单位,它是应用......
  • 2025秋招图像处理面试题01_LBP算法原理
    问题LBP是一种常见的特征描述算法,用来提取局部的纹理特征,其原理其实很简单,下面我们就来看看它是怎么一回事吧。LBP简介LBP(LocalBinaryPatterns,局部二值模式)是一种很简单但很高效的局部纹理特征描述算子,于1994年由T.Ojala,M.Pietikäinen和D.Harwood提出,经过后续的......
  • 用 KV 缓存量化解锁长文本生成
    很高兴和大家分享HuggingFace的一项新功能:KV缓存量化,它能够把你的语言模型的速度提升到一个新水平。太长不看版:KV缓存量化可在最小化对生成质量的影响的条件下,减少LLM在长文本生成场景下的内存使用量,从而在内存效率和生成速度之间提供可定制的权衡。你是否曾尝试过......