缓存常用的解决方案

缓存穿透

概念

访问一个不存在的key,缓存不起作用。请求会穿透到DB,访问量大时DB会挂掉.

解决方案

1.采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤

2.访问key未在db查询到值,也将空值写进缓存,设置较短的过期时间

缓存雪崩

概念

大量的key设置了相同的过期时间,导致在缓存同一时间全部失效,造成db瞬间请求量过大,压力陡增,引起雪崩

解决方案

可以给key设置过期时间加上一个随机值过期时间,使得每个key分散的失效,不会集中同一时刻失效

缓存击穿

概念

一个缓存的key,在缓存过期的那一刻,同时有大量请求,这些请求都会穿透到db

解决方案

在访问key之前,采用setnx(Set if not exists)来设置另外一个短期key锁住当前key的访问,访问结束再删除该短期key

你可能感兴趣的:(缓存常用的解决方案)