可接受的Memcached用法

时间:2012-07-01 10:54:41

标签: php memcached

我在使用Memcached时遇到了一些麻烦。

我的代码如下:

if(!$Z->get('user')) {
    $Z->set('user', $hs->load_hs_main($_GET['from'], $_GET['table']));
}

$je = $Z->get('user') ? $Z->get('user') : $hs->load_hs_main($_GET['from'], $_GET['table']);

$Z->get('user')$je应该是MySQLi结果对象。这会产生奇怪的效果,比如print_r无法正常工作,看起来不对。

我想检查是否存在由memcached创建的对象,如果它存在则使用它。但如果不存在,请设置它。

2 个答案:

答案 0 :(得分:3)

从缓存中获取项目或从其他位置创建/加载项目的正确方法是:

$user = $Z->get('user'); // get it from cache, returns falsy value if not found
if(!$user) { // not found
    $user = $hs->load_hs_main(...); // load the element from somewhere else
    $Z->set('user', $user); // cache it
}
// here $user always exists

答案 1 :(得分:1)

一般情况下,您无法存储"内部"的对象。 memcache中的类。这些对象包含无法序列化的数据。您必须从结果对象中获取数据并将其存储在PHP数组中。然后,您可以将该数组存储在memcache中。