我正在开发一个Web应用程序并尝试了解memcached的工作原理。
我的问题是如何使用memcached来获得最佳效果。
在应用程序中,当每个用户登录时,sql查询检查7-8个表并以数组形式获取结果。我想在memcached中缓存这些数组。但它应该如何运作?
我应该在memcached中使用唯一键来缓存每个用户的数组吗?
我应该如何刷新阵列?有一个cron工作还是什么?
提前感谢您的想法。
答案 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中删除密钥