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