2 回答
TA贡献1825条经验 获得超6个赞
就是说要你写一个PHP缓存的类,通过这个类来统一的访问memcached。
然后这个类需要支持一次返回多个数据。
同时,需要对从memcached拿到的数据存一下数组。方便在本次request里面重复获取缓存的时候直接使用。
稍微难点就在那个对多个数据的查询和缓存上面。
TA贡献1842条经验 获得超12个赞
// example:
// get_cache('foo');
// get_cache(['foo', 'bar']);
function get_cache($keys) {
static $cache = [];
static $memcached;
$keys = (array)$keys;
$result = $missing = [];
foreach ($keys as $key) {
if (isset($cache[$key])) {
$result[$key] = $cache[$key];
} else {
$missing[] = $key;
}
}
if (!$missing) {
return $result;
}
if (!$memcached) {
$memcached = new Memcached;
}
$mresult = $memcached->getMulti($missing);
if ($mresult) {
foreach ($mresult as $key => $value) {
$result[$key] = $cache[$key] = $value;
}
}
return $result;
}
添加回答
举报