我需要一些与infinispan中的以下场景相关的指导。这是我的情景:
1)我创建了两个节点并使用客户端服务器模式在infinispan中成功启动。
2)在热棒客户端,我创建了一个remotechachemanager,然后获得了一个RemoteCache。
3)在远程缓存中我把这个像cache.put(key,new HashMap());它已成功添加。
4)现在,当我要使用cache.remove(key)清除此值时,我发现它没有被删除,并且每次去除它时哈希映射仍然存在。
如何清除该值以便从群集的所有节点清除它?
如何在上面的值HashMap中添加或删除更改?
与实施DeltaAware和Delta接口有什么关系吗?
请建议我这个概念或我可以学习的一些指示
谢谢
答案 0 :(得分:2)
只要您使用相同的密钥并且在密钥上正确实现了equals()和hashCode(),就可以删除HashMap。我假设您正在使用分布式或复制模式。 编辑:我已经意识到equals()和hashCode()对RemoteCache并不重要,因为无论如何都要对序列化进行序列化,并且所有比较都将在底层字节[]上执行。
远程缓存不直接支持DeltaAware。通常,即使在库模式下使用它们也非常棘手。
如果你想将缓存与地图一起使用,我建议使用复合键,如cache-key#map-key,而不是存储复杂的HashMap。