PHP Conference Japan 2024

Memcache::increment

(PECL memcache >= 0.2.0)

Memcache::increment增加項目的值

說明

Memcache::increment(字串 $key, 整數 $value = 1): 整數|false

Memcache::increment() 會將指定項目的值增加指定的 value 值。如果由 key 指定的項目不是數字且無法轉換為數字,則其值將會更改為 valueMemcache::increment() *不會* 在項目不存在時建立它。

注意事項:

請勿對已壓縮儲存的項目使用 Memcache::increment(),因為後續呼叫 Memcache::get() 將會失敗。

您也可以使用 memcache_increment() 函式。

參數

key

要遞增的項目的鍵值。

value

將項目遞增 value 值。

傳回值

成功時傳回新的項目值,失敗時傳回 false

範例

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

<?php

/* 程序式 API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* 將計數器增加 2 */
$current_value = memcache_increment($memcache_obj, 'counter', 2);

/* 物件導向 API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
/* 將計數器增加 3 */
$current_value = $memcache_obj->increment('counter', 3);

?>

另請參閱

新增註解

使用者貢獻的註解 5 則註解

jay dot paroline at escapemg dot com
15 年前
您可以簡單地在每次遞增之前先使用 ADD 方法新增它,而不是在遞增之前檢查該值。如果它已經存在,您的 ADD 操作將被忽略,如果它不存在,則會被設定。

如果您按照順序先執行 add($memcacheKey, 0) 然後再執行 increment($memcacheKey, 1),您就可以避免所有可能的競爭條件。如果兩個執行緒同時執行此程式碼,無論執行緒以何種順序執行,您的值最終都將會是 2。
匿名
15 年前
請注意
如果鍵值不存在,memcache 並*不會* 傳回 false(如您所預期),而是傳回 0。
您不會收到任何提示,指出該鍵值不存在,而且仍然不存在,也沒有任何值被遞增。
perroazul64 at gmail dot com
13 年前
當鍵值不存在時,它可能返回布林值 false 或整數 0(我在不同的伺服器上得到不同的返回值),因此在檢查類似 ($memcache->increment($key) === false) 的條件時要小心。
ian at blip dot fm
15 年前
請務必使用 Memcache::decrement(),切勿將 Memcache::increment() 與負值一起使用。

Memcache::decrement() 具有防止數值變成負數的檢查機制,但 Memcache::increment() 沒有,因此您最終可能會得到一個大約 18 京的垃圾整數,而不是預期值。
匿名
19 年前
如果變數不存在,即使您指定了遞增值,結果也將是 null。

如果您將其用於互斥鎖,請檢查它是否為 null,如果是,則使用 ADD 新增變數。
To Top