Hazelcast TTL生存时间不起作用

问题描述

在 spring boot 环境中,我有以下 Hazelcast 配置。

@Bean
public Config hazelCastConfig() {
    final Config config = new Config().setInstanceName("hazelcast-cache")
            .addMapConfig(new MapConfig().setName("hazelcast-cache")
                    .setMaxSizeConfig(
                            new MaxSizeConfig(200,MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
                    .setEvictionPolicy(EvictionPolicy.LRU).setTimeToLiveSeconds(5))
            .setClassLoader(Thread.currentThread().getContextClassLoader());

    final UserCodeDeploymentConfig distCLConfig = config.getUserCodeDeploymentConfig();
    distCLConfig.setEnabled(true)
            .setClassCacheMode(UserCodeDeploymentConfig.ClassCacheMode.ETERNAL)
            .setProviderMode(UserCodeDeploymentConfig.ProviderMode.LOCAL_CLASSES_ONLY);

    return config;
}

这是如何在我们的代码中使用可缓存的

@Cacheable(value = "presetCategoryMaster",key = "{#storeCode,#validDisplayFlag}")
public List<PresetCategoryMasterEntity> getPresetMasterCategoryForStoreCdAndValdiDisplayFlag(
        final Integer storeCode,final Short validDisplayFlag) {
              ----------------
              ----------------
}

但 TTL 从未兑现。我们也在跟踪日志中确认。但是在第一次调用之后,一旦创建了缓存条目,它就永远不会被驱逐,除非您明确调用 CacehEvict() 或 CachePut()。尽管我们将 TTL 值设置为 5 秒,但即使过了一个小时,缓存也不会被清除。

感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)