使用每个用户查询的内存缓存


Using memcached per user's querys

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

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

在应用程序中,当每个用户登录时,sql 查询会检查 7-8 个表,并在数组中获取结果。我正在考虑将该数组缓存在内存缓存中。但是它应该如何工作?

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

我应该如何刷新该数组? 用 cron 作业还是什么?

提前感谢您的想法。

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

假设你有函数,其输出仅依赖于传递的参数,您可以从这些参数创建一个键(例如,这是一个获取用户数据的函数,并且您正在传递$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中删除密钥即可