PHP Conference Japan 2024

讀取穿透快取回呼

當無法從伺服器擷取項目時,會叫用讀取穿透快取回呼。回呼會傳遞 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;
}
?>
新增註釋

使用者提供的註釋 2 則註釋

chadkouse
12 年前
或者直接在回呼函式中設定值,並使用您自訂的到期時間,然後返回 false。 我認為這樣更簡潔。
oorza2k5 at gmail dot com
15 年前
這一點在任何地方都沒有說明,所以我查看了原始碼...

read-through 快取設定值的到期時間設定為 0,也就是永久有效。 這意味著如果您希望您的鍵值隱式到期,請不要使用回呼方法,而是檢查返回值是否為布林值 false,然後手動設定值,至少目前是這樣。
To Top