当我测试infinispan集群节点缓存的到期方法时,我发现当节点达到最大空闲时间时,它不会从集群中的其他节点获得“上次访问条目”,而是直接使缓存条目无效节点。例如:我启动了两个节点A和B,并将缓存的最大空闲时间设置为10秒。在测试开始时,我向节点A发送了一个请求,以访问数据库记录并将数据库记录写入缓存。此时,节点A将数据缓存同步到节点B.然后在5s,我在节点A访问缓存条目,然后在10秒后访问节点B.我发现节点B的缓存条目无效,节点B从数据库中检索数据库记录,并写入缓存并同步到其他节点,而不是将缓存视为有效。
为什么它与文档中的描述不同? http://infinispan.org/docs/stable/user_guide/user_guide.html#expiration_details
对于群集节点缓存过期失败的配置,我将其配置如下:
Configuration C = new ConfigurationBuilder()
.expiration().enableReaper(). wakeUpInterval(50000L).maxIdle(10000l).build();
听起来您使用的是旧版本的Infinispan。在https://issues.jboss.org/browse/ISPN-9003中直到9.3才引入群集范围最大空闲到期。如果此问题仍然存在于9.3或更新版本,您可以在https://issues.jboss.org/projects/ISPN上记录错误。