缓存穿透 | 缓存和数据库都没有的数据 | 1、加校验;2、返回null |
缓存击穿 | 缓存没有,数据库有(一般为缓存时间到期) | 1、设置热点数据永不过期;2、加互斥锁 |
缓存雪崩 | 数据大批量在缓存过期,查询数据巨大,引起数据库压力过大甚至down机 | 1、缓存数据过期时间设置随机,防止同一时间大量数据过期现象发生;2、缓存数据库分布式部署,将热点数据均匀分布不同缓存库;3、设置热点数据永不过期 |
1、缓存穿透:缓存和数据库都没有的数据,比如一直访问id= -1,用户可能攻击导致数据库压力过大
2、缓存击穿:缓存没有,数据库有;并发同一个请求,并发用户特别多,同事缓存没读取到数据,又同去数据库,引起数据库压力瞬间增大
3、缓存雪崩:多条缓存失效,数据库大批量在缓存过期,查询数据量巨大,引起数据库压力过大甚至down机