内存缓存数据到期时是否删除了密钥?

时间:2011-11-14 19:52:22

标签: java google-app-engine memcached

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

我能找到最接近回答这个问题的答案是:http://code.google.com/appengine/docs/java/memcache/overview.html#How_Cached_Data_Expires

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

换句话说,如果我这样做

mycache.contains("key")

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

旁注:不要认为它有所作为;但为了以防万一,我正在使用memcache服务中的异步内存缓存,并像这样得到它:

MemcacheServiceFactory.getAsyncMemcacheService();

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

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

我从数据存储区返回时存储空值,因此我不会经常查找空值。我确实要小心确保在可能发生变化时移除密钥。因为memcache查找返回null,我假设查询实际上是null;但我确实确保当其他可能发生变化的查询发生时,null查找被删除。这就是为什么我使用cache.contains("key")而不是cache.get("key") == null

1 个答案:

答案 0 :(得分:11)

您的假设是正确的,如果值已从memcache服务中逐出,mycache.contains("key")将返回false。此行为记录在low-level Memcache API的Javadoc中。