【问题标题】:Are keys removed when memcache data expires?Memcache 数据过期时是否会删除键?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多