This page mentions that replace should be used rather than set, but gives no reason. Best information I could find was a comment by 'argyleblanket' on the set page. (http://www.php.net/manual/en/memcache.set.php#84032)
"Using set more than once for the same key seems to have unexpected results - it does not behave as a "replace," but instead seems to "set" more than one value for the same key. "get" may return any of the values.
This was tested on a multiple-server setup - behaviour may be different if you only have one server. "
Memcache::replace
(PECL memcache >= 0.2.0)
Memcache::replace — Reemplaza el valor de un valor existente
Descripción
Memcache::replace() debe ser usado para reemplazar el valor de un
valor existente en una key determinada. En caso que la
llave no exista, Memcache::replace() devolverá
FALSE. Por lo demás Memcache::replace() funciona
similar a Memcache::set().
También se puede usar la función memcache_replace().
Parámetros
-
key -
La clave que será asociada con el valor.
-
var -
La variable a guardar. Cadenas y enteros son guardados tal y como son, otros tipos son guardados de forma serializada.
-
flag -
Utilice
MEMCACHE_COMPRESSEDpara guardar el valor de forma comprimida (utiliza zlib). -
expire -
Tiempo de expiración del valor. Si es igual a cero, el valor nunca expirará. También se puede usar Unix timestamp o el número de segundos empezando desde de hora actual, pero como máximo el número de segundos no debe exceder de 2592000 (30 días).
Valores devueltos
Devuelve TRUE en caso de éxito o FALSE en caso de error.
Ejemplos
Ejemplo #1 Ejemplo de Memcache::replace()
<?php
$memcache_obj = memcache_connect('memcache_host', 11211);
/* API por procedimientos */
memcache_replace($memcache_obj, "test_key", "some variable", false, 30);
/* API OO */
$memcache_obj->replace("test_key", "some variable", false, 30);
?>
Ver también
- Memcache::set() - Guarda datos en el servidor
- Memcache::add() - Añadir un valor en el servidor
