从缓存而不是MySQL读取,除了创建它的第一个用户(PHP)

时间:2014-06-25 23:51:01

标签: php mysql caching

在我的网络应用程序中,许多用户发布数据然后请求计算结果。由于计算耗时,我想缓存第一个用户的结果,让其他用户读取缓存。

if ( Cache::exist( $dataId ) ) {
    return Cache::read( $dataId );
}
$result = getDataFromDatabaseAndCalcResult( $dataId );
Cache::write( $dataId, $result );
return $result;

然而,当我尝试这个程序时,超过100个请求同时进入,并且大多数请求没有找到缓存,因此它们都调用getDataFromDatabaseAndCalcResult方法。服务器耗尽了CPU资源。

是否有任何想法只有第一个用户调用getDataFromDatabaseAndCalcResult。我应该实现一些作业队列或mysql锁定系统吗?

0 个答案:

没有答案