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. "
(PECL memcache >= 0.2.0)
Memcache::replace — Replace value of the existing item
Memcache::replace() should be used to replace value of
existing item with
key. In case if item with such
key doesn't exists, Memcache::replace() returns
FALSE. For the rest Memcache::replace() behaves
similarly to Memcache::set().
Also you can use memcache_replace() function.
The key that will be associated with the item.
The variable to store. Strings and integers are stored as is, other types are stored serialized.
MEMCACHE_COMPRESSEDto store the item compressed (uses zlib).
Expiration time of the item. If it's equal to zero, the item will never expire. You can also use Unix timestamp or a number of seconds starting from current time, but in the latter case the number of seconds may not exceed 2592000 (30 days).
TRUE on success or
FALSE on failure.
Example #1 Memcache::replace() example
$memcache_obj = memcache_connect('memcache_host', 11211);
/* procedural API */
memcache_replace($memcache_obj, "test_key", "some variable", false, 30);
/* OO API */
$memcache_obj->replace("test_key", "some variable", false, 30);