redis 缓存击穿 穿透 雪崩

缓存击穿

缓存击穿:高并发场景下,缓存的key过期,造成大量请求直接打到DB。

方案:

  1. key过期后,第一个请求过来发现key过期,直接获取锁,获取到锁的连接访问db,再缓存key到redis。未获取到锁的连接随机sleep,然后从reids再读取key。
  2. 这样会有一个问题,第一个连接在获取到锁后读取db时连接挂了,怎么办?(redis锁加过期时间)
  3. 假如第一个连接没挂,但是锁超时了,他还没从db读取完数据缓存到redis。这时其他连接sleep完继续访问db,怎么办? 第一个连接读取db时采用2个线程,一个线程读取db,另一个线程查看redis在过期时间内是否已经缓存完数据,没缓存完的话增加锁的失效时间。

缓存穿透

 

缓存穿透:客户端查询的是本系统根本不存在的数据,这样大量请求直接打到DB。

方案:

  1. 布隆过滤器 :有一个弊端,数据只能增加不可删除
  2. 布谷鸟过滤器:支持删除

 缓存雪崩

缓存雪崩:大量的key同时失效,造成瞬间大量请求访问DB

方案:

  1. 时点性无关:缓存key随机过期时间
  2. 零点:有些场景下,在零点切日的时候,咱们会更新全量key到redis。这个时候强依赖 击穿方案。

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值