php数组缓存和memcache缓存 一道面试题,帮忙理下思路

我们的缓存分为两级,第一级只是一个PHP数组,有效范围是Request。而第二级是memcached。这么做的原因是,很多数据在一个Request周期内需要加载多次,这样可以减少memcached的网络请求。另外我们的框架也会尽可能的发送memcached的gets命令来获取数据,从而减少网络请求”, 请使用伪代码实现以上缓存架构

这道题的思路是怎样的,题目也没看懂,麻烦帮忙理下思路.


慕的地8271018
浏览 1175回答 2
2回答

胡子哥哥

就是说要你写一个PHP缓存的类,通过这个类来统一的访问memcached。然后这个类需要支持一次返回多个数据。同时,需要对从memcached拿到的数据存一下数组。方便在本次request里面重复获取缓存的时候直接使用。稍微难点就在那个对多个数据的查询和缓存上面。

红颜莎娜

// 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;}
打开App,查看更多内容
随时随地看视频慕课网APP