缓存穿透:查询一个一定不存在的数据,由于缓存是不会命中的,所以直接访问数据库,但是数据库中也没有数据,我们没办法将结果放到缓存中,所以每次查询都要到数据库中查询。
解决方案:数据库不存在的数据,存一个空对象标识数据库中也没有,避免查询数据库,当数据库新增数据成功后,删除缓存的空对象。
缓存雪崩:大量缓存数据的过期时间一样,导致大量缓存失效,请求直接访问数据库。
解决方案:过期时间加上随机值,减少大量缓存同时失效的概率。
缓存击穿:某一个高频热点key失效,大量并发直接访问数据库。
解决方案:加锁
本文探讨了缓存系统中常见的三大问题:缓存穿透、缓存雪崩和缓存击穿。针对缓存穿透,提出的解决方案是在数据库不存在数据时,存入一个空对象作为标识。缓存雪崩的解决办法是为缓存设置随机过期时间,减少同时失效的情况。对于缓存击穿,采用加锁机制来防止大量并发直接访问数据库。这些策略旨在保障系统的稳定性和性能。
5万+

被折叠的 条评论
为什么被折叠?



