protected function doIncrement($key, $offset, $initial, $expire)
{
$value = $this->get($key, $token);
if ($value === false) {
$success = $this->add($key, $initial, $expire);
return $success ? $initial : false;
}
if (!is_numeric($value) || $value < 0) {
return false;
}
$value += $offset;
// value can never be lower than 0
$value = max(0, $value);
$key = $this->encodeKey($key);
$success = $this->client->cas($token, $key, $value, $expire);
return $success ? $value : false;
}