简单的Spring Memcached - 如何在没有任何过期的情况下添加对象

时间:2017-02-13 08:57:10

标签: java spring caching simple-spring-memcached

我正在使用SSMCache在我的应用程序中存储一些对象。我正在将SSMCache对象添加到我的CacheManager,如下所示:

@Bean
@Override
public CacheManager cacheManager() {
    Set<SSMCache> ssmCacheSet = new HashSet<>();
    try {
        ssmCacheSet.add(new SSMCache(getMyCache(),
                PropertyManager.getIntProperty("memcached.interval", 14400), true));
    } catch (Exception e) {
        LOGGER.error("Error creating cache manager", e);
    }

    SSMCacheManager ssmCacheManager = new SSMCacheManager();
    ssmCacheManager.setCaches(ssmCacheSet);
    return ssmCacheManager;
}

我想知道如何 NOT 指定缓存过期时间,以便始终使缓存可用,即。我不希望我的缓存过期。

我浏览了Simple Spring Memcached的官方文档,但找不到如何为非过期缓存指定值。

我认为使用0的值会使缓存完全没有过期,但我只是想从文档或wiki中确定它的位置。我也经历了SSMCache的构造函数,找不到没有到期参数的构造函数。

请帮助我了解如何在没有过期时间的情况下创建缓存。

2 个答案:

答案 0 :(得分:0)

您是否检查过Github存储库中的源代码?您可以在存储库中搜索“never expire”关键字,您将获得具有如下行的文件。例如,UpdateSingleCache.java在评论中有以下详细信息。

  

另请注意:值为0表示给定值永不过期。该值仍然容易被清除        memcached用于空间和LRU(最近最少使用)注意事项。

答案 1 :(得分:0)

是, 0 应通知memcached不使此密钥过期。这并不意味着密钥将永远存在于缓存中,因为它仍然可以由于eviction而从缓存中删除。

如果您发现SSM不尊重 0 ,请举报错误。