【redis——缓存击穿】

缓存击穿

缓存击穿是指​​某个热点key在缓存过期失效的瞬间,同时有大量请求涌入,直接穿透缓存访问数据库​​的现象。

核心特征​​

  • 针对的是​​热点数据​​(高频访问的key)
  • 发生在​​缓存失效的瞬间​​
  • 造成数据库​​瞬时高并发压力​​
  • 数据​​真实存在于数据库​

缓存击穿的解决方案

互斥锁(Mutex Lock)方案

​​核心思想​​:使用分布式锁保证只有一个线程重建缓存
适用场景​​:写操作较少的动态数据
​​优势​​:强一致性

存在
不存在
等待后
降级
客户端请求数据
缓存存在?
返回缓存数据
尝试获取分布式锁
获取锁成功?
查询数据库
写入缓存
释放锁
等待重试或降级
返回默认数据

逻辑过期(Logical Expiration)

​​核心思想​​:物理永不过期,通过逻辑字段控制有效性
适用场景​​:极高热度的静态数据(如商品基础信息)
优势:渐进式更新​​:通过异步线程更新缓存,避免瞬时负载

不存在
存在
未过期
已过期
客户端请求数据
缓存存在?
查询数据库并全量写入
返回新数据
逻辑是否过期?
返回缓存数据
尝试获取更新锁
获锁成功?
立即返回当前过期数据
同时异步更新
异步流程:
1. 查询最新数据
2. 更新缓存
3. 释放锁
返回当前过期数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值