(PECL memcached >= 0.1.0)
Memcached::cas — Сравнивает и устанавливает значение для записи
   Memcached::cas() осуществляет проверку и установку значения записи,
   новое значение будет сохранено, только если другие клиенты не обновили его
   со времени последнего обращения этим клиентом. Эта проверка осуществляется с помощью
   параметра cas_token, который представляет собой 64-битное значение
   присвоенное существующей записи сервером memcache. Обратитесь к документации метода
   Memcached::get*(), который используется для получения этого токена.
   Обратите внимание, что токен представлен в виде числа двойной точности из-за ограничений
   диапазона значений целочисленного типа в PHP.
  
cas_tokenУникальное значение, связанное с существующей записью. Генерируется сервером memcache.
keyКлюч, под которым сохраняется значение.
valueСохраняемое значение.
expirationВремя хранения объекта, по умолчанию равно 0. Для более подробной информации смотрите Время хранения объекта.
   Возвращает TRUE в случае успешного завершения  или FALSE в случае возникновения ошибки.
   Метод Memcached::getResultCode() возвращает
   Memcached::RES_DATA_EXISTS если запись которую вы пытаетесь сохранить
   была изменена с момента последнего обращения.
  
Пример #1 Пример использования Memcached::cas()
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
do {
    /* fetch IP list and its token */
    $ips = $m->get('ip_block', null, $cas);
    /* if list doesn't exist yet, create it and do
       an atomic add which will fail if someone else already added it */
    if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
        $ips = array($_SERVER['REMOTE_ADDR']);
        $m->add('ip_block', $ips);
    /* otherwise, add IP to the list and store via compare-and-swap
       with the token, which will fail if someone else updated the list */
    } else { 
        $ips[] = $_SERVER['REMOTE_ADDR'];
        $m->cas($cas, 'ip_block', $ips);
    }   
} while ($m->getResultCode() != Memcached::RES_SUCCESS);
?>