缓存穿透、缓存击穿、缓存雪崩及其解决方案

缓存穿透、缓存击穿、缓存雪崩及其解决方案

2023.3.29

缓存穿透

缓存穿透是指客户端同一时间使用大量的不存在的key请求,使得所有请求同时访问数据库,将数据库击溃的的情况,一般来讲,穿透的方式为两种:

  1. 同key多请求:使用一个不存在的key多次向服务器发送请求,这种方式的解决方案就是将请求数据库得到的null值也存放到缓存中,将其失效时间设置得短一点。
  2. 异key多请求:使用随机的不存在的key多次向服务器发送请求,这种方式的解决方案一般是采用布隆过滤器解决,当然这种方式是有弊端的,会有误判的情况;也可以采用请求数据合法性判断的方式解决,但是合法性判断的过于广泛也难以解决。

缓存击穿

缓存击穿是指客户端在某个热点key失效的时刻,发送大量该key请求,使得所有请求同时访问数据库,从而击溃数据库的情况。解决方式通常是:

  1. 最笨的方式,从根源上解决:取消该key失效的特性,将其设置为永久存在。
  2. 将其在数据库获取数据的代码加上互斥锁,使得这些请求中只有其第一个请求才能访问数据库,其他的请求就会自然的访问缓存。

缓存雪崩

缓存雪崩是指缓存中某些key在某一时间内同时失效,使得这些key的请求同时访问数据库,将数据库击溃的情况,解决方式通常是:做好数据预加载,在数据失效前,重新访问数据库并更新缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值