缓存并发
如果查询缓存key,不存在就加锁,去DB查找之后解锁;其他进行发现有锁之后进行等待,但是这种方式会造成锁等待。
缓存失效
高并发时,由于大量的key设置了相同的过期时间,导致某一时间大量key过期造成数据库压力,可以通过设置超时时间加上1-5分钟的随机时间,避免集体失效。
缓存雪崩
原因是某一时间,key未更新到缓存中大量请求压如数据库导致宕机。解决方案:
- 采用加锁计数(参考缓存并发),可以缓解数据库压力,但是做成系统的吞吐量。
- 可以给用户返回默认值(可理解为优雅降级)。
- 将默认值请求放入队列,下次较快查缓存。
- 采用缓存预热,加一个服务去跑预热数据到缓存中。