1

假设我有 30 秒的缓存,生成缓存的 db 请求需要 2 秒,我每秒收到 100 个请求,当缓存需要刷新时会发生什么?

我怀疑我的数据库被击中 200 次。我想要发生的事情是让第一个通过,然后告诉其他人返回缓存,所以基本上在 30 秒之后,缓存的第一次尝试在这里什么也没说,但是剩下的得到以前存在的东西,直到让通过的那个更新它。

我必须在应用程序级别执行此操作,还是可以将 memcache 配置为执行此操作?

4

1 回答 1

1

您将需要在您的应用程序中构建此逻辑。当在 memcached 中找不到该项目时,只需从数据库中检索它,并在缓存中创建一个新项目。项目过期后,您需要从数据库中重新缓存项目。

[ get item from cache ] ----- yes
   |                           |
  no                        [ return item ]
   |
   |
[ get item from database ] -- yes
   |                           |
  no                        [ store item in cache ]
   |                           |
[ return not found ]        [ return item ]
于 2012-09-11T13:43:57.693 回答