PHP Conference Japan 2024

Memcache::increment

(PECL memcache >= 0.2.0)

Memcache::increment递增项目的数值

描述

Memcache::increment(string $key, int $value = 1): int|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);

/* OO 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 年前
无需在递增之前检查值,您只需在每次递增之前将其添加即可。如果它已经存在,则忽略您的添加,如果它不存在,则设置它。

如果您按此顺序添加($memcacheKey, 0) 然后递增($memcacheKey, 1),则可以避免所有可能的竞争条件。如果两个线程同时运行此代码,无论线程以何种顺序执行,您最终的值都将始终为 2。
匿名
15 年前
请注意
如果键不存在,memcache 不会返回 false(如您预期的那样),而是返回 0。
您不会得到任何提示,表明键不存在并且仍然不存在,并且没有任何内容被递增。
perroazul64 at gmail dot com
13 年前
当键不存在时,它可能会返回 bool(false) 或 int(0)(我在不同的服务器上得到不同的返回值),因此如果您检查类似 ($memcache->increment($key) === false) 的内容,请小心。
ian at blip dot fm
15 年前
小心使用 Memcache::decrement(),切勿使用 Memcache::increment() 并传入负值。

防止 Memcache::decrement() 变为负数的检查在 Memcache::increment() 中不存在,因此您最终可能会得到一个大约 18 千万亿的垃圾整数,而不是预期值。
匿名
19 年前
如果不存在变量,即使您指定了递增值,结果也将为空。

如果您将此用于互斥锁,请检查它是否为空,如果是,则添加变量。
To Top