2 回答

TA貢獻1825條經驗 獲得超6個贊
就是說要你寫一個PHP緩存的類,通過這個類來統一的訪問memcached。
然后這個類需要支持一次返回多個數據。
同時,需要對從memcached拿到的數據存一下數組。方便在本次request里面重復獲取緩存的時候直接使用。
稍微難點就在那個對多個數據的查詢和緩存上面。

TA貢獻1842條經驗 獲得超13個贊
// 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;
}
添加回答
舉報