缓存篇—缓存击穿

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

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

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

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

  • 互斥锁方案,保证同一时间只有一个业务线程更新缓存,未能获取互斥锁的请求,要么等待锁释放后重新读取缓存,要么就返回空值或者默认值。
  • 不给热点数据设置过期时间,由后台异步更新缓存,或者在热点数据准备要过期前,提前通知后台线程更新缓存以及重新设置过期时间;
相关推荐
晨曦夜月2 小时前
高并发内存池——单例模式在缓存的作用
缓存·单例模式
jeCA EURG3 小时前
一、安装Redis(win11环境下)
数据库·redis·缓存
AILabNotes3 小时前
016、性能与安全权衡:网关的缓存、中继与匿名化策略
安全·缓存
小江的记录本6 小时前
【分布式】分布式核心组件——分布式ID生成:雪花算法、号段模式、美团Leaf、百度UidGenerator、时钟回拨解决方案
分布式·后端·算法·缓存·性能优化·架构·系统架构
摇滚侠20 小时前
短信验证码登录 Redis实战 黑马程序员
数据库·redis·缓存
014-code1 天前
Redis Stream:消息队列的进阶之路
数据库·redis·缓存
IntMainJhy1 天前
【Flutter for OpenHarmony 】第三方库 实战:`cached_network_image` 图片缓存+骨架屏鸿蒙适配全指南✨
flutter·缓存·harmonyos
JoshRen1 天前
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
数据库·redis·缓存
eRRA OFAG1 天前
Redis 设置密码无效问题解决
数据库·redis·缓存
ALex_zry1 天前
go-zero Redis缓存封装与Model层设计
redis·缓存·golang·气象