缓存篇—缓存击穿

在很多场景下,我们的业务通常会有几个数据会被频繁地访问,比如秒杀活动,这类被频地访问的数据被称为热点数据。

如果缓存中的某个热点数据过期 了,此时大量的请求访问了该热点数据,就无法从缓存中读取,直接访问数据库,数据库很容易就被高并发的请求冲垮,这就是缓存击穿的问题。

可以发现缓存击穿跟缓存雪崩很相似,你可以认为缓存击穿是缓存雪崩的一个子集。

应对缓存击穿可以采取前面说到两种方案:

  • 互斥锁方案,保证同一时间只有一个业务线程更新缓存,未能获取互斥锁的请求,要么等待锁释放后重新读取缓存,要么就返回空值或者默认值。
  • 不给热点数据设置过期时间,由后台异步更新缓存,或者在热点数据准备要过期前,提前通知后台线程更新缓存以及重新设置过期时间;
相关推荐
看到请催我学习20 分钟前
内存缓存和硬盘缓存
开发语言·前端·javascript·vue.js·缓存·ecmascript
小登ai学习4 小时前
简单认识 redis -3 -其他命令
数据库·redis·缓存
猿小蔡-Cool4 小时前
CPU 多级缓存
java·spring·缓存
BergerLee17 小时前
对不经常变动的数据集合添加Redis缓存
数据库·redis·缓存
Dylanioucn17 小时前
【分布式微服务云原生】掌握分布式缓存:Redis与Memcached的深入解析与实战指南
分布式·缓存·云原生
wclass-zhengge1 天前
Redis篇(最佳实践)(持续更新迭代)
redis·缓存·bootstrap
Dylanioucn1 天前
【分布式微服务云原生】探索Redis:数据结构的艺术与科学
数据结构·redis·分布式·缓存·中间件
小小娥子2 天前
Redis的基础认识与在ubuntu上的安装教程
java·数据库·redis·缓存
DieSnowK2 天前
[Redis][集群][下]详细讲解
数据库·redis·分布式·缓存·集群·高可用·新手向
PYSpring2 天前
数据结构-LRU缓存(C语言实现)
c语言·数据结构·缓存