或者直接在回呼函式中設定值,並使用您自訂的到期時間,然後返回 false。 我認為這樣更簡潔。
當無法從伺服器擷取項目時,會叫用讀取穿透快取回呼。回呼會傳遞 Memcached 物件、請求的鍵值和透過參考傳遞的值變數。回呼負責設定值並傳回 true 或 false。如果回呼傳回 true,Memcached 會將填入的值儲存在伺服器上,並將其傳回原始呼叫函式。只有 Memcached::get() 和 Memcached::getByKey() 支援這些回呼,因為 memcache 協定不會提供關於在多鍵值請求中找不到哪些鍵值的資訊。
範例 #1 Read-through 回呼範例
<?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;
}
?>
這一點在任何地方都沒有說明,所以我查看了原始碼...
read-through 快取設定值的到期時間設定為 0,也就是永久有效。 這意味著如果您希望您的鍵值隱式到期,請不要使用回呼方法,而是檢查返回值是否為布林值 false,然後手動設定值,至少目前是這樣。