或者直接在回调中使用你自己的自定义过期时间设置值,并返回 false。我认为这更简洁。
当无法从服务器检索项目时,会调用贯穿缓存回调。回调会传递 Memcached 对象、请求的键和按引用传递的值变量。回调负责设置值并返回 true 或 false。如果回调返回 true,Memcached 将在服务器上存储填充的值,并将其返回给原始调用函数。只有 Memcached::get() 和 Memcached::getByKey() 支持这些回调,因为 memcache 协议不会提供关于在多键请求中未找到的键的信息。
示例 #1 贯穿回调示例
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$profile_info = $m->get('user:'.$user_id, 'user_info_cb');
function user_info_cb($memc, $key, &$value)
{
$user_id = substr($key, 5);
/* 在数据库中查找配置文件信息 */
/* ... */
$value = $profile_info;
return true;
}
?>
这在任何地方都没有指定,所以我查看了源代码...
贯穿缓存设置值的过期时间设置为 0,即永远。这意味着如果你希望你的键隐式过期,请不要使用回调方法,而是检查 boolean false 作为返回值,并手动设置值,至少目前是这样。