我正在开发一个 Web 应用程序并试图了解 memcached 的工作原理。
我的问题是关于如何使用 memcached 来获得最佳结果。
在应用程序中,当每个用户登录时,一个 sql 查询会检查 7-8 个表并以数组的形式获取结果。我正在考虑将这些数组缓存在 memcached 中。但它应该如何工作?
我应该在 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中删除key即可