缓存穿透、缓存击穿与缓存雪崩

缓存穿透

概念

访问一个缓存中不存在的key,请求会打到db上,流量大时db会挂掉;

解决方案

1.使用布隆过滤器,用于存储可能访问的key,不存在的key直接被过滤;

2.访问key未在db查询到值,但还是将空值写入缓存,但可以设置较短的过期时间;

缓存击穿

概念

一个缓存中存在的key,在缓存过期的一刻,存在大量访问请求,这些请求都会击穿到db,造成db访问量剧增,db压力增加;

解决方案

在访问key之前采用setnx来设置另一个短期key来锁住当前Key的访问,访问结束以后再删除该短期key;

 

缓存雪崩

概念

大量的key设置了相同的过滤时间,导致在缓存中同一时刻全部失效,造成瞬时db压力剧增,引起雪崩;

解决方案

在给缓存加上过期时间时可以额外加上一个随机时间,使得每个Key的过期时间分布开来,不会集中在同一时刻失效;

 

posted @ 2023-01-21 12:10  HexThinking  阅读(20)  评论(0编辑  收藏  举报