在一个用例中,我经常收到一些数据,需要使用Infinispan进行缓存(在库模式/过程中的复制集群中),其中数据通常非常相似,但是不同键的数量要大得多比可能的相关数据量还要多。
我担心不必要地创建/复制的数据对象的数量,这些数据对象大多是在不同键下相互复制的。
将缓存分成两部分是我唯一的选择吗?例如
key -> data hash -> data
我唯一的问题是在key -> data hash
缓存之前将data has -> data
复制到集群的其余部分的可能性。在复制data
时(我处理该事件),我需要key
在那里。
或者是否有其他可用选项,例如拦截缓存插入以使用这些数据对象的池?
答案 0 :(得分:1)
没有可让您对数据进行重复数据删除的功能,因此,是的,您需要将其分为两个缓存。您可以写your own interceptor,但那里有狮子。您是否会遍历所有本地条目以找到匹配项?
如果将非事务性缓存与同步复制一起使用,则可以先更新dataId -> data
缓存,然后再更新key -> dataId
。到第二个操作被调用时,第一个写操作已复制到所有节点。