В настоящее время я работаю над добавлением 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