Caching 通过DeltaAware和Delta接口infinispan使用RemoteCache

Caching 通过DeltaAware和Delta接口infinispan使用RemoteCache,caching,cluster-computing,distributed,infinispan,delta,Caching,Cluster Computing,Distributed,Infinispan,Delta,我需要一些与infinispan中的以下场景相关的指导。以下是我的设想: 1) 我创建了两个节点,并使用客户机-服务器模式在infinispan中成功启动 2) 在hot rod客户端中,我创建了一个remotechachemanager,然后获得了一个RemoteCache 3) 在远程缓存中,我像这样放置cache.put(key,newhashmap());它已成功添加 4) 现在,当我打算使用cache.remove(key)清除这个值时,我看到它没有被删除,每次我去删除它时,哈希映射仍

我需要一些与infinispan中的以下场景相关的指导。以下是我的设想:

1) 我创建了两个节点,并使用客户机-服务器模式在infinispan中成功启动

2) 在hot rod客户端中,我创建了一个remotechachemanager,然后获得了一个RemoteCache

3) 在远程缓存中,我像这样放置cache.put(key,newhashmap());它已成功添加

4) 现在,当我打算使用cache.remove(key)清除这个值时,我看到它没有被删除,每次我去删除它时,哈希映射仍然存在

如何清除该值,以便从集群的所有节点清除该值

我还如何传播更改,如添加或删除上面的值HashMap

这与实现DeltaAware和DeltaInterface有关吗

请向我推荐这个概念或一些我可以学习的要点


谢谢

只要使用同一个键,并且在该键上正确实现了equals()和hashCode(),删除HashMap就可以了。我假设您使用的是分布式或复制模式。 EDIT:我意识到equals()和hashCode()对于RemoteCache并不重要,因为密钥无论如何都是序列化的,所有比较都将在底层字节[]上执行

远程缓存不直接支持DeltaAware。通常,即使在库模式下,使用它们也是相当棘手的


如果您想将缓存与映射一起使用,我建议您使用复合键,如cache key#map key,而不是存储复杂的HashMap。

感谢您的响应。是的,我只使用分布式缓存。当然,我将实现equals()和hashcode()并进行检查。此外,使用hashMap作为值还可以正确地组织数据。但是考虑到你的评论,我想我会照你说的去做,看看。另一个注意事项是,我也尝试使用AtomicHashMap作为值,但当我尝试放入缓存时,它抛出了SerializationException。实际上..我是在检查缓存是否包含密钥后进行删除的。它总是给人真实的感觉,然后我就离开了。因此,删除似乎没有传播到集群。我没有在任何事务范围内使用它。是否需要?否,客户端不支持事务。至于使用AtomicHashMap,这是infinispan核心模块中的一个类。Infinispan客户端热棒模块不依赖于此,通常不使用它-它只使用Infinispan commons模块。因此,不要试图在客户机-服务器模式下使用infinispan core中的任何内容。我想如果你在使用uberjar而不是Maven进行依赖管理,那么要区分这一点就更复杂了。你的建议得到了Flavius的好评。非常感谢你。我将改变我的方法,只在RemoteCache而不是HashMap中存储密钥、值。