详解redis(16):缓存击穿

一、什么是缓存击穿?

缓存击穿
某一个"热点 Key"在某一时刻失效 ,大量并发请求同时访问这个 Key,导致请求瞬间全部打到数据库,数据库压力骤增。

为什么叫"击穿"?

缓存是"墙"

热点 Key 是"薄弱点"

一过期 → 并发请求 把缓存打穿

二、缓存击穿是怎么发生的?

典型场景(非常真实)

首页商品信息

热门文章

秒杀商品库存

明星用户信息

不是所有 key 失效,而是一个 key 被并发"围殴"

缓存击穿的完整过程

1. 热点 key 到期
2. Redis 返回 miss
3. 高并发请求同时查 DB
4. DB QPS 暴涨
5. 服务线程阻塞
6. 接口超时 / 崩溃

三、如何解决缓存击穿?

同一时间,只允许一个请求去查数据库

一、互斥锁

思路

缓存 miss 时

先抢锁

只有抢到锁的人查 DB

其他请求等待 / 返回旧值

二、热点数据永不过期

Redis key 不设置 TTL

value 中带过期时间

三、提前刷新

热点 key

到期前主动更新

相关推荐
czlczl2002092515 小时前
Redis数据编码
数据库·redis·缓存
Wpa.wk15 小时前
pb协议接口测试
数据库·redis·缓存
IpdataCloud15 小时前
资源受限设备上轻量级IP查询模块的部署方法
网络·数据库·网络协议·tcp/ip
青槿吖15 小时前
SpringMVC通关秘籍(下):日期转换器、拦截器与文件上传的奇幻冒险
java·开发语言·数据库·sql·mybatis·状态模式
weixin_4563216415 小时前
Java架构设计:Redis AOF持久化深度解析(原理+实战+避坑)
java·开发语言·redis
楼田莉子15 小时前
MySQL数据库:表及其表相关的操作
数据库·学习·mysql
ZTLJQ15 小时前
驾驭高并发:Python协程与 async/await 完全解析
服务器·数据库·python
百年੭ ᐕ)੭*⁾⁾16 小时前
DataFrame存入mysql以及读取操作
数据库·mysql·numpy·pandas·ipython
²º²²এ松16 小时前
vs code连接ubuntu esp项目
linux·数据库·ubuntu
四谎真好看16 小时前
Redis学习笔记(实战篇3)
redis·笔记·学习·学习笔记