我正在努力将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
答案 0 :(得分:11)
您的假设是正确的,如果值已从memcache服务中逐出,mycache.contains("key")
将返回false。此行为记录在low-level Memcache API的Javadoc中。