每个用户的查询使用memcached
问题描述:
我正在研究一个web应用程序,并试图了解memcached是如何工作的。每个用户的查询使用memcached
我的问题是关于如何使用memcached来获得最佳结果。
在应用程序中,当每个用户登录时,sql查询将检查7-8个表并将结果以数组形式显示。我正在考虑将这些数组缓存在memcached中。但它应该如何工作?
我应该缓存每个用户在memcached中具有唯一键的数组吗?
我该如何刷新数组?用cron工作还是什么?
感谢您的意见提前。
答
如果数据应由具有唯一密钥的用户缓存,则取决于数据对于该用户是否唯一。如何刷新数组取决于数据如何改变。所以一般来说,你的问题是不可能回答的,在回答具体问题之前你需要阅读一些教程。
假设你有函数的输出只依赖于传递的参数,你可以从这些参数创建一个键(例如,这是一个获取用户数据的函数,你传递$ userId - 你的键可能是userdata/$用户id),你可以缓存功能
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;
}
至于无效,当某些数据已经改变的返回值,只是删除从内存缓存
关键