Google App Engine - Memcache - Java-версия Python client.add? - PullRequest
1 голос
/ 09 апреля 2010

Интерфейс python для memcache имеет метод add:

add (ключ, значение, время = 0, min_compress_len = 0, пространство имен = нет)

Устанавливает значение ключа, если и только если элемент еще не находится в memcache. ...

Возвращаемое значение True, если добавлено, False при ошибке.

Таким образом, вы можете добавить элемент, если он не существует, и посмотреть, существовал ли он ранее по возвращаемому значению.

Эквивалент java memcache api для этого не позволяет узнать, было ли предыдущее значение или нет:

пут (ключ, значение, срок действия, MemcacheService.SetPolicy.ADD_ONLY_IF_NOT_PRESENT);

MemcacheService.SetPolicy.ADD_ONLY_IF_NOT_PRESENT: добавить значение, если ключ не имеет значения, ничего не делать, если ключ существует

Есть ли способ узнать, существовало ли предыдущее значение в java api или нет? Я не могу просто проверить с помощью метода contains заранее, потому что между вызовом contains и вызовом put другой экземпляр JVM может изменить memcache.

1 Ответ

0 голосов
/ 09 апреля 2010

документы говорят:

Метод put () не возвращает предыдущее известное значение для ключа. Всегда возвращает ноль.

Так что, если вы хотите узнать, существует ли он до вызова put(), я бы просто позвонил contains() заранее.

Если вы беспокоитесь о том, что другие абоненты могут вставить что-то между вашими двумя вызовами, возможно, вы слишком сильно зависите от надежности Memcache. Memcache не предназначен для надежного хранения важных данных, как кэш для более дорогих операций (например, чтение хранилища данных, urlfetches).

Помните, что Memcache может быть очищен в любое время и по любой причине, и ваше приложение должно учитывать этот факт.

...