2024 年 PHP Conference Japan

有效期限

某些儲存指令涉及將有效期限值(相對於項目或客戶端要求的操作)傳送到伺服器。在所有這些情況下,傳送的實際值可以是 Unix 時間戳記(自 1970 年 1 月 1 日起的秒數,以整數表示),或是從目前時間開始計算的秒數。在後一種情況下,秒數不能超過 60*60*24*30(30 天的秒數);如果有效期限值大於該值,伺服器將其視為實際的 Unix 時間戳記值,而不是從目前時間開始的偏移量。

如果有效期限值為 0(預設值),則項目永不過期(儘管它可能會從伺服器中刪除,以便為其他項目騰出空間)。

新增筆記

使用者貢獻的筆記 2 則筆記

valugi at gmail dot com
8 年前
設定過期時間並不表示鍵值會在該特定時間過期。我不確定背景發生了什麼事,是否有像垃圾回收器這樣的程序會使鍵值過期,但某些函式並不會啟動過期檢查,並將鍵值返回為有效,例如 `getAllKeys` 並非原子操作,即使過期的鍵值也會被返回。

$memcached = new Memcached();
$memcached->set('key','value',10);
//等待超過 10 秒
sleep(20);
$data = $memcached->getAllKeys();
var_dump($data); // 鍵值仍會被列出
$key = $memcached->get('key'); // 將會觸發過期
i dot caught dot air at gmail dot com
7 年前
由於 memcache 內部不使用高解析度時鐘,TTL 為 n 秒將會在 n 到 n-1 秒之間過期。

如果您使用非常短的 TTL,這一點很重要。

參見 https://github.com/memcached/memcached/issues/307
To Top