什么事缓存雪崩,击穿,穿透?
雪崩:在同一时间大量缓存大面积的失效,大量的请求访问数据库,造成数据库的崩溃。
解决方案:
1.缓存过期的时间随机
2.缓存数据增加标记,发现缓存失效,则更新数据到缓存中。
3.缓存预热
4.使用互斥锁
击穿:缓存失效,在同一时刻大量的求情并发到数据库,造成数据库崩溃。数据库中有数据,缓存中没有数据。
解决方案:
1.互斥锁
2.热点数据永不过期
穿透:数据库中没有数据,缓存存也没有数据。大量请求落到数据库上,造成数据库的崩溃。
解决方案:
1.接口增加校验,大于0的ID才能进行访问
2.缓存中取不到的数据,在数据库中也没有,可以将这个key加入到缓存中,防止暴力攻击。
3.使用布隆过滤器,将可能的数据hash到bitmap中,一定不存在的数据的数据会被这个bitmap拦截掉