缓存穿透
概念
访问一个不存在的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