假设我有30秒缓存的内容,生成缓存内容的db请求需要2秒,而我每秒收到100个请求,当缓存需要刷新时会发生什么?
我怀疑我的数据库被击中了200次。我想要发生的是让第一个通过,但然后告诉其他人回到缓存,所以基本上30秒后,第一次尝试缓存在这里没有说什么但是然后剩下的得到给定的东西,直到通过更新它的那个。
我是否必须在应用程序级别执行此操作,或者可以配置memcache来执行此操作?
答案 0 :(得分: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 ]