Удаляются ли ключи по истечении срока действия данных memcache? - PullRequest
6 голосов
/ 14 ноября 2011

В настоящее время я работаю над добавлением memcache в приложение, работающее на GAE / J. У меня есть вопрос о том, как ведет себя рабочий memcache, когда значения истекают, если их ключи также удаляются.

Самое близкое к ответу на этот вопрос я могу найти здесь: http://code.google.com/appengine/docs/java/memcache/overview.html#How_Cached_Data_Expires

Я знаю, что не могу полагаться на значения, оставшиеся в memcache; и я не знаю, но что мне интересно, так это то, удаляются ли ключи, сопоставленные с этими значениями.

Другими словами, если я делаю

mycache.contains("key")

Будет ли это все еще верно после того, как значение выгружено из кэша?

Примечание: не думайте, что это имеет значение; но на всякий случай я использую асинхронный memcache из сервиса memcache и держу его вот так:

MemcacheServiceFactory.getAsyncMemcacheService();

Я спрашиваю это, потому что я не делаю типичный

if(cache.get("key") == null)

Я сохраняю нулевые значения, когда они возвращаются из хранилища данных, поэтому я не постоянно ищу нулевое значение. И я действительно стараюсь вынуть ключ, когда он может измениться. Поэтому, поскольку поиск в memcache возвращает значение null, я работаю в предположении, что запрос фактически равен нулю; но я гарантирую, что когда другие запросы, которые могут измениться, произойдут, нулевой поиск будет удален. Вот почему я использую cache.contains("key") вместо cache.get("key") == null

1 Ответ

11 голосов
/ 14 ноября 2011

Ваше предположение верно, mycache.contains("key") вернет false, если значение было удалено из службы memcache.Это поведение описано в Javadoc низкоуровневого API Memcache .

.
...