1. 缓存穿透: 不断地查询一个sql中不存在的数据 ,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存, 这将导致这个不存在的数据的每次请求都要到数据库中去查询,进而给数据库带来压力.
解决方式:可将查询不到的数据在缓存中存空值,设置过期时间
2.缓存击穿:指一个key非常热点,在不停地扛着大并发, 大并发集中对这个点进行访问,当key失效的瞬间,持续的大并发就会突破缓存,直接请求数据库.
解决方式:将热点数据设置永不失效,有交期设为-1
3. 缓存雪崩: 指在某一时间段,缓存集中大量过期失效,导致大量请求穿过缓存直接冲击数据库,数据库会产生周期性压力.
(缓存集中过期不致命,致命的是服务器某个节点宕机或断网,对数据库服务器造成的压力是不可预知的,很可能瞬间就把数据库压垮)