缓存穿透、击穿、雪崩区别和解决方案
缓存的使用以及需要注意的问题
1、缓存穿透
概念说明:指 cache 和 db 中都没有数据,读完 cache 没有,再读 db 还是没有,每次请求到 cache 和 db。
解决方法:
a).拦截非法请求,比如不正常的 id 请求直接拒绝。
b).没有数据时也 cache 下,过期时间可设置短点,不把过多请求打到 db 去。
2、缓存雪崩
概念说明:大量 cache 数据同时过期,导致大量请求打到 db。
解决方法:
a).热点 key 永不过期,异步更新。
b).防止同时大量数据过期,cache 过期时间随机抖动下。
3、缓存击穿
概念说明:一般是少量热点数据过期(比如微博热搜),导致大量请求查 cache 没有,又查 db。
解决方法:
a)热点 key 永不过期,异步更新。
b)更新热点 key 时加锁,同一个 key 最好只有一个请求打到 db。
c)接口限流,熔断、降级。