缓存篇—缓存击穿

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

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

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

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

  • 互斥锁方案,保证同一时间只有一个业务线程更新缓存,未能获取互斥锁的请求,要么等待锁释放后重新读取缓存,要么就返回空值或者默认值。
  • 不给热点数据设置过期时间,由后台异步更新缓存,或者在热点数据准备要过期前,提前通知后台线程更新缓存以及重新设置过期时间;
相关推荐
可涵不会debug25 分钟前
Redis魔法学院——第四课:哈希(Hash)深度解析:Field-Value 层级结构、原子性操作与内部编码优化
数据库·redis·算法·缓存·哈希算法
fengxin_rou1 小时前
【黑马点评实战篇|第一篇:基于Redis实现登录】
java·开发语言·数据库·redis·缓存
我待_JAVA_如初恋1 小时前
Redis常用的数据类型之String
数据库·redis·缓存
ALex_zry1 小时前
分布式缓存与微服务架构的集成
分布式·缓存·架构
ALex_zry2 小时前
分布式缓存安全最佳实践
分布式·安全·缓存
Anastasiozzzz3 小时前
数据库与缓存的一致性之间的终极博弈!
缓存
Demon_Hao3 小时前
JAVA缓存的使用RedisCache、LocalCache、复合缓存
java·开发语言·缓存
jiunian_cn4 小时前
【Redis】zset数据类型相关指令
数据库·redis·缓存
jiunian_cn4 小时前
【Redis】set数据类型相关指令
数据库·redis·缓存
&文刀水寿5 小时前
缓存与数据库的数据同步机制失效的处理策略
缓存