当memcache数据过期时是否删除键



我目前正在为GAE/J上运行的应用程序添加memcache。我有一个问题,当值过期时,如果它们的键也被删除,那么生产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,我就假设查询实际上是null;但我确实确保,当其他查询可能改变,发生空查找被删除。这就是为什么我使用cache.contains("key")而不是cache.get("key") == null

您的假设是正确的,如果该值已从memcache服务中被驱逐,mycache.contains("key")将返回false。这种行为在底层Memcache API的Javadoc中有记录。

最新更新