0

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;
}

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

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

我认为使用值0将使缓存根本不会过期,但我只想从指定它的文档或 wiki 中确定。我也浏览了构造函数,SSMCache但找不到没有过期参数的构造函数。

请帮助我如何创建没有过期时间的缓存。

4

2 回答 2

0

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

如果您发现 SSM 不支持0 ,请报告错误。

于 2017-02-13T13:35:35.830 回答
0

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

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

于 2017-02-13T12:34:45.840 回答