贯穿缓存回调

当无法从服务器检索项目时,会调用贯穿缓存回调。回调会传递 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;
}
?>
添加备注

用户贡献的备注 2 个备注

2
chadkouse
12 年前
或者直接在回调中使用你自己的自定义过期时间设置值,并返回 false。我认为这更简洁。
1
oorza2k5 at gmail dot com
15 年前
这在任何地方都没有指定,所以我查看了源代码...

贯穿缓存设置值的过期时间设置为 0,即永远。这意味着如果你希望你的键隐式过期,请不要使用回调方法,而是检查 boolean false 作为返回值,并手动设置值,至少目前是这样。
To Top