【发布时间】:2011-12-28 23:00:20
【问题描述】:
我目前正致力于将 memcache 添加到在 GAE/J 上运行的应用程序中。我有一个关于生产内存缓存在值过期时的行为的问题,如果它们的键也被删除。
我能找到最接近回答这个问题的地方是:http://code.google.com/appengine/docs/java/memcache/overview.html#How_Cached_Data_Expires
我知道我不能依赖留在内存缓存中的值;我没有,但我想知道的是,映射到这些值的键是否也被删除了。
换句话说,如果我这样做了
mycache.contains("key")
从缓存中推出一个值后,这仍然是真的吗?
旁注:不要认为这有什么不同;但以防万一,我正在使用 memcache 服务中的异步 memcache 并像这样获取它:
MemcacheServiceFactory.getAsyncMemcacheService();
我问这个是因为我没有做典型的
if(cache.get("key") == null)
当它们从数据存储区返回时,我会存储空值,因此我不会经常查找空值。而且我确实注意确保在可能更改时将其移除。因此,仅仅因为 memcache 查找返回 null,我就假设查询实际上是 null;但我确实确保当其他可能改变这种情况的查询发生时,空查找被删除。这就是为什么我使用cache.contains("key") 而不是cache.get("key") == null
【问题讨论】:
-
键值不可分离;如果他们是,那将没有任何意义。
标签: java google-app-engine memcached