缓存雪崩

缓存并发

如果查询缓存key,不存在就加锁,去DB查找之后解锁;其他进行发现有锁之后进行等待,但是这种方式会造成锁等待。

缓存失效

高并发时,由于大量的key设置了相同的过期时间,导致某一时间大量key过期造成数据库压力,可以通过设置超时时间加上1-5分钟的随机时间,避免集体失效。

缓存雪崩

原因是某一时间,key未更新到缓存中大量请求压如数据库导致宕机。解决方案:

  • 采用加锁计数(参考缓存并发),可以缓解数据库压力,但是做成系统的吞吐量。
  • 可以给用户返回默认值(可理解为优雅降级)。
  • 将默认值请求放入队列,下次较快查缓存。
  • 采用缓存预热,加一个服务去跑预热数据到缓存中。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器