decrement will not change TTL of the stored key/value.
(PECL memcached >= 0.1.0)
Memcached::decrement — Decrement numeric item's value
$key
,$offset
= 1,$initial_value
= 0,$expiry
= 0
Memcached::decrement() decrements a numeric item's value
by the specified offset
. If the item's value is not
numeric, an error will result. If the operation would
decrease the value below 0, the new value will be 0.
Memcached::decrement() will set the item to the
initial_value
parameter if the key doesn't exist.
key
The key of the item to decrement.
offset
The amount by which to decrement the item's value.
initial_value
The value to set the item to if it doesn't currently exist.
expiry
The expiry time to set on the item.
Returns item's new value on success or false
on failure.
Example #1 Memcached::decrement() example
<?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');
// ^ will fail due to item value not being numeric
var_dump($n);
?>
The above example will output:
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