Java memcache数据过期时是否删除密钥?

Java memcache数据过期时是否删除密钥?,java,google-app-engine,memcached,Java,Google App Engine,Memcached,我目前正致力于将memcache添加到运行在GAE/J上的应用程序中。我有一个问题,关于值过期时生产memcache的行为,如果它们的密钥也被删除 我能找到的最接近于回答这个问题的答案是: 我知道我不能依赖留在memcache中的价值观;我不知道,但我想知道的是,映射到这些值的键是否也被删除了 换句话说,如果我这样做了 mycache.contains(“key”) 将值从缓存中推出后,这仍然是真的吗? 旁注:不要认为这有什么不同;但为了以防万一,我正在使用memcache服务中的async m

我目前正致力于将memcache添加到运行在GAE/J上的应用程序中。我有一个问题,关于值过期时生产memcache的行为,如果它们的密钥也被删除

我能找到的最接近于回答这个问题的答案是:

我知道我不能依赖留在memcache中的价值观;我不知道,但我想知道的是,映射到这些值的键是否也被删除了

换句话说,如果我这样做了

mycache.contains(“key”)

将值从缓存中推出后,这仍然是真的吗?

旁注:不要认为这有什么不同;但为了以防万一,我正在使用memcache服务中的async memcache,并获得如下信息:

MemcacheServiceFactory.getAsyncMemcacheService()

我问这个是因为我没有做典型的

if(cache.get(“key”)==null)


当空值从数据存储返回时,我会存储它们,因此我不会经常查找空值。我会小心地确保在钥匙可能发生变化时取下钥匙。因此,仅仅因为memcache查找返回null,我就假设查询实际上是null;但我确实确保,当其他可能改变这种情况的查询发生时,空查找将被删除。这就是为什么我使用
cache.contains(“key”)
而不是
cache.get(“key”)==null

您的假设是正确的,
mycache.contains(“key”)
如果该值已从memcache服务中逐出,则将返回false。此行为记录在的Javadoc中。

键和值是不可分离的;如果是的话,那就没有任何意义了。