每个用户的查询使用memcached

时间:2012-04-14 16:49:30

标签: php memcached

我正在开发一个Web应用程序并尝试了解memcached的工作原理。

我的问题是如何使用memcached来获得最佳效果。

在应用程序中,当每个用户登录时,sql查询检查7-8个表并以数组形式获取结果。我想在memcached中缓存这些数组。但它应该如何运作?

我应该在memcached中使用唯一键来缓存每个用户的数组吗?

我应该如何刷新阵列?有一个cron工作还是什么?

提前感谢您的想法。

1 个答案:

答案 0 :(得分:0)

如果数据应由具有唯一键的用户缓存,则取决于该数据对于该用户是否唯一。如何刷新数组取决于数据的更改方式。所以一般来说,你的问题是不可能回答的,你需要阅读一些教程,然后回过头来回答具体的问题。

假设你有一个函数,哪个输出只依赖于传递的参数,你可以从这些参数创建一个键(例如,这是一个获取用户数据的函数,你传递$ userId - 你的密钥可能是userdata / $ userId),可以缓存函数的返回值

function get_user_data($userId) {
    $cacheKey = 'userdata/' . $userId;
    $result = cache::instance()->get($cacheKey);
    if ($result == false) {
       // body of the function
       cache::instance()->set($cacheKey, $result);
    }
    return $result;
}

至于无效,当某些数据被更改时,只需从memcache中删除密钥