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

本文探讨了一种PHP应用中采用的两阶段缓存策略,利用PHP数组快速响应同一Request内的多次数据需求,并通过memcached降低网络请求。通过伪代码展示了如何实现一个统一访问缓存的类,以提高数据获取效率。
摘要由CSDN通过智能技术生成

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

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

回复内容:

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

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

// 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;

}

我表示也没有看懂!

就是说要你写一个PHP缓存的类,通过这个类来统一的访问memcached。

然后这个类需要支持一次返回多个数据。

同时,需要对从memcached拿到的数据存一下数组。方便在本次request里面重复获取缓存的时候直接使用。

稍微难点就在那个对多个数据的查询和缓存上面。

简单的理解是, 已经获取到了,先缓存到memcache里面,如果在一定周期内,需要用到相同的数据,先从memcache里面读取, 这个操作时间比较简短

美图的笔试题。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值