decrement will not change TTL of the stored key/value.
(PECL memcached >= 0.1.0)
Memcached::decrement — 数値アイテムの値を減らす
$key
,$offset
= 1,$initial_value
= 0,$expiry
= 0
Memcached::decrement() は、数値アイテムの値を
offset
で指定しただけ減らします。
アイテムの値が数値でない場合はエラーとなります。
操作後の値が 0 より小さくなる場合は、新しい値は 0 となります。
アイテムが存在しない場合、Memcached::decrement() は値を
initial_value
に設定します。
key
減らしたいアイテムのキー。
offset
値を減らしたい量。
initial_value
そのアイテムが存在しない場合に設定する値。
expiry
そのアイテムに設定する有効期限。
成功した場合にアイテムの新しい値、失敗した場合に false
を返します。
例1 Memcached::decrement() の例
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->set('counter', 5);
$n = $m->decrement('counter');
var_dump($n);
$n = $m->decrement('counter', 10);
var_dump($n);
var_dump($m->get('counter'));
$m->set('counter', 'abc');
$n = $m->increment('counter');
// アイテムの値が数値でないので、これは失敗します
var_dump($n);
?>
上の例の出力は以下となります。
int(4) int(0) int(0) bool(false)
Found possible bug :
decrement fails and returns -1 when memcached::OPT_BINARY_PROTOCOL is set to true.
tested on PECL Memcached 2.1.0 and libmemcached version 1.0.8