缓存穿透:查询一个一定不存在的数据,由于缓存是不会命中的,所以直接访问数据库,但是数据库中也没有数据,我们没办法将结果放到缓存中,所以每次查询都要到数据库中查询。
解决方案:数据库不存在的数据,存一个空对象标识数据库中也没有,避免查询数据库,当数据库新增数据成功后,删除缓存的空对象。
缓存雪崩:大量缓存数据的过期时间一样,导致大量缓存失效,请求直接访问数据库。
解决方案:过期时间加上随机值,减少大量缓存同时失效的概率。
缓存击穿:某一个高频热点key失效,大量并发直接访问数据库。
解决方案:加锁