Исходя из ответа ZoFreX, если вы посмотрите на комментарии здесь: http://www.php.net/manual/en/memcache.set.php
Вы увидите следующее:
Использование набора более одного раза для одного и того же ключа кажетсяиметь неожиданные результаты - он не ведет себя как «замена», а вместо этого «устанавливает» более одного значения для одного и того же ключа.«get» может вернуть любое из значений.
Это было проверено на установке с несколькими серверами - поведение может отличаться, если у вас только один сервер.
Так что действительно и верно replace()
сначала будет искать существующий ключ, а затем заменить его (если он существует), тогда как set()
просто добавит ключ.Я полагаю, что всегда лучше сначала использовать replace()
, учитывая, что он возвращает FALSE
, если ключ не найден, и в этом случае вы будете использовать add()
вместо set()
, поскольку вы точно знаете, что ключ не существует,Это гарантирует, что у вас не будет никаких непреднамеренных неудач.Таким образом, ваш код может быть что-то вроде:
$replace = Memcached::replace($key, $var);
if ( ! $replace)
{
$set = Memcached::add($key, $var);
}