缓存雪崩
缓存雪崩是指在同一时间段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。
解决方案:
给不同的key的TTL添加随机值
利用Redis集群提高服务的可用性
给缓存业务添加将降级限流策略
给业务添加多级缓存
缓存击穿
缓存击穿问题也叫热点key问题,就是一个被高并发并且缓存重建业务较复杂的key突然失效了,无数的请求访问会瞬间给数据库带来巨大的冲击;例如一个人查询数据库重建缓存数据,在缓存数据还没有写入数据库的时候其它的人也对进行重复多次的查询数据库写入缓存操作。
解决方案:互斥锁 逻辑过期
互斥锁:
逻辑过期:
互斥锁:优点:没有额外的内存消耗 保证一致性 实现简单
缺点:需要线程等待,性能受影响 可能有死锁的风险
逻辑过期: 优点:线程无需等待,性能较好
缺点:不保证一致性 额外线程内存消耗