PHP Conference Japan 2024

Memcache::replace

(PECL memcache >= 0.2.0)

Memcache::replace取代現有項目的值

說明

Memcache::replace(
    字串 $key,
    混合 $var,
    整數 $flag = ?,
    整數 $expire = ?
): 布林值

應該使用 Memcache::replace() 來取代現有鍵值 key 的項目值。如果具有該鍵值的項目不存在,Memcache::replace() 會返回 false。在其他方面,Memcache::replace() 的行為與 Memcache::set() 類似。您也可以使用 memcache_replace() 函式。

參數

key

將與項目關聯的鍵值。

var

要儲存的變數。字串和整數會按原樣儲存,其他類型會序列化後儲存。

flag

使用 MEMCACHE_COMPRESSED 來壓縮儲存項目(使用 zlib)。

expire

項目的到期時間。如果它等於零,則項目將永不過期。您也可以使用 Unix 時間戳記或從目前時間開始計算的秒數,但在後一種情況下,秒數不得超過 2592000(30 天)。

返回值

成功時返回 true,失敗時返回 false

範例

範例 #1 Memcache::replace() 範例

<?php

$memcache_obj
= memcache_connect('memcache_host', 11211);

// 程序式 API
memcache_replace($memcache_obj, "test_key", "some variable", false, 30);

// 物件導向 API
$memcache_obj->replace("test_key", "some variable", false, 30);

?>

參見

新增筆記

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

10
adam.pippin [AT] ohmedia.ca
14 年前
此頁面提到應該使用 replace 而不是 set,但沒有說明原因。我能找到的最佳資訊是 'argyleblanket' 在 set 頁面上的評論。(https://php.dev.org.tw/manual/en/memcache.set.php#84032)

對於同一個鍵值重複使用 set 指令似乎會產生非預期的結果 - 它並非如「取代」般運作,反倒像是為同一個鍵值「設定」多個數值。「get」指令可能會返回其中任何一個數值。

此情況已在多伺服器設定下測試 - 如果您只有一個伺服器,行為可能會有不同。
To Top