【发布时间】:2021-07-28 08:54:42
【问题描述】:
Redia 没有缓存昂贵的数据库查询,因此查询正在针对数据库运行。如果不幸的是,在 Redia 缓存结果之前我收到了几个针对该查询的请求,在我当前的实现中,所有请求都转到 DB,这会导致 DB 性能急剧下降。
我知道可能没有简单的方法可以解决此问题,但我想知道是否有任何方法可以缓解这种情况?
----更新-----
我进一步在谷歌上搜索了 cache stampede 这个词,发现这 2 篇文章提供了丰富的信息:
- What is a cache stampede and how we solved it by writing our own gem
- How a Cache Stampede Caused One of Facebook’s Biggest Outages
他们提到了以下 3 种缓解这种情况的方法:
- 锁定
- 外部重新计算
- 概率提前到期
【问题讨论】: