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

Dav*_*ave 6 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

Ibr*_*ief 11

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