详解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

到期前主动更新

相关推荐
姜鱼问生8 小时前
Nginx 缓存命中率监控:从 X-Cache-Status 到实时统计
运维·nginx·缓存
IvorySQL9 小时前
PostgreSQL 日报|修复截断 zstd 备份检测(10 月 9 日)
数据库·postgresql
刘胡子大叔9 小时前
SQL 脚本的导入顺序
数据库·sql
代码什么用10 小时前
Spring对IoC的实现
数据库·spring
禾小西11 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
hz5678912 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC12 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday12 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
半杯咖啡半行码12 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt
小米里的大麦12 小时前
16 MySQL 事务
数据库·mysql