Redis缓存穿透、击穿、雪崩,及解决方案
Redis缓存穿透、击穿、雪崩,及解决方案
一、概念
缓存穿透:缓存和数据库中都没有数据,每次查询缓存都无法命中,导致每个请求都会落在数据库上。
缓存击穿:某一个热点数据接收大量请求,这个key突然过期的瞬间,大量的请求会落在数据库上。
缓存雪崩:大量缓存同一时间集中失效,大量的请求直接落在数据库上,数据库的压力瞬间上升,甚至挂掉。
二、缓存穿透解决方案
1、接口层增加校验,比如用户鉴权校验,参数做校验,不合法的参数直接代码Return。
2、把Key的Value写为null、位置错误等其他值,设置一个较短的过期时间,例如60s。
3、布隆过滤器(Bloom Filter)
三、缓存击穿解决方案
为热点数据设置为永不过期,然后加一个互斥锁保证缓存的单线程写。
四、缓存雪崩解决方案
1、热点数据的过期时间加上一个随机数。
2、热点数据设置永不过期:
(1)有更新操作则同步更新缓存。
(2)把过期时间存在value里,通过一个后台的异步线程进行缓存的更新。
3、在缓存失效后,通过互斥锁来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。
本文来自博客园,作者:百成,转载请注明原文链接:https://www.cnblogs.com/baicheng/p/15803034.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器