Hazelcast项目绝对到期日

Hazelcast项目绝对到期日,hazelcast,Hazelcast,我正在scala 2.11.8上使用Hazelcast“3.6.3” 我已经写了这段代码 val config = new Config("mycluster") config.getNetworkConfig.getJoin.getMultcastConfig.setEnabled(false) config.getNetworkConfig.getJoin.getMulticastConfig.setEnabled(false) config.getNetworkConfig.getJoin

我正在scala 2.11.8上使用Hazelcast“3.6.3”

我已经写了这段代码

val config = new Config("mycluster")
config.getNetworkConfig.getJoin.getMultcastConfig.setEnabled(false)
config.getNetworkConfig.getJoin.getMulticastConfig.setEnabled(false)
config.getNetworkConfig.getJoin.getAwsConfig.setEnabled(false)
config.getNetworkConfig.getJoin.getTcpIpConfig.setMembers(...)
config.getNetworkConfig.getJoin.getTcpIpConfig.setEnabled(true)
val hc = Hazelcast.newHazelcastInstance(config)
hc.getConfig.addMapConfig(new MapConfig()
     .setName("foo")
     .setBackupCount(1)
     .setTimeToLiveSeconds(3600)
     .setAsyncBackupCount(1)
     .setInMemoryFormat(InMemoryFormat.BINARY)
     .setMaxSizeConfig(new MaxSizeConfig(1, MaxSizePolicy.USED_HEAP_SIZE))
)
hc.putValue[(String, Int)]("foo", "1", ("foo", 10))
我注意到,当1小时结束时,hazelcast不会从缓存中删除项目。这些物品似乎永远保存在缓存中

我不想要你。我想要绝对过期这意味着在1小时后,无论在一小时内被访问多少次,该项目都必须被踢出


我已经做了必要的谷歌搜索,我认为我上面的代码是正确的。但是当我查看我的服务器日志时,我非常确定没有从缓存中删除任何内容。

对不起,我不是scala人。但是你能解释一下hc.addTimeToLiveMapConfig的作用吗? 通常,在启动Hazelcast之前,需要将TTL配置添加到config对象中

我相信在您的情况下,您正在启动Hazelcast,然后才使用TTL更新配置。请按相反的顺序试一试。
如果您不想将其添加到配置中,则存在一个重载的map.put方法,该方法将TTL作为输入。这样,您可以为每个条目指定TTL

好的,只需更改设置配置和启动节点的顺序。Hazelcast atm不支持您尝试执行的操作。在启动node.config.addMapConfig(new MapConfig()…应该在val hc=Hazelcast.newHazelcastInstance(config)之前)之后,您正在更新配置。我对我的答案投了反对票。不确定原因。此更改是否解决了您的问题?