(PECL memcached >= 0.1.0)
Memcached::cas — Comparar e intercambiar un ítem
   Memcached::cas() realiza una operación "comprobar y establecer" ('cas' por sus siglas en inglés),
   de forma que el ítem será guardado solamente si ningún otro cliente lo actualizó
   desde la última vez que este cliente lo obtuvo. La comprobación se realiza mediante
   el parámetro cas_token, el cual es un valor único de 64 bit
   asignado al ítem existente por memcache. Ver la documentación de los métodos
   Memcached::get*() para saber cómo obtener este
   token. Observar que el token está representado como un valor de tipo double debido a
   las limitaciones de espacio para valores integer de PHP.
  
cas_tokenEl valor único asociado con el ítem existente. Generado por memcache.
keyLa clave en la que se guardará el valor.
valueEl valor a guardar.
expirationTiempo de expiración, que por defecto es 0. Ver Tiempos de expiración para más información.
   Devuelve TRUE en caso de éxito o FALSE en caso de error.
   Memcached::getResultCode() devolverá
   Memcached::RES_DATA_EXISTS si el ítem que se trata
   de guardar ha sido modificado desde la última vez que se obtuvo.
  
Ejemplo #1 Ejemplo de Memcached::cas()
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
do {
    /* obtener la lista de direcciones IP y sus token */
    $ips = $m->get('ip_block', null, $cas);
    /* si la lista no existe aún, crear una y realizar
       un añadido atómico que fallará si alguien ya añadió un valor */
    if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
        $ips = array($_SERVER['REMOTE_ADDR']);
        $m->add('ip_block', $ips);
    /* en caso contrario, añadir la IP a la lista y guardar vía comparar-e-intercambiar
       con el token, que fallará si alguien ya actualizó la lista */
    } else { 
        $ips[] = $_SERVER['REMOTE_ADDR'];
        $m->cas($cas, 'ip_block', $ips);
    }   
} while ($m->getResultCode() != Memcached::RES_SUCCESS);
?>