Infinispan使用对象池而不是创建新对象的多对一缓存?

时间:2019-04-14 20:21:09

标签: caching replication infinispan

在一个用例中,我经常收到一些数据,需要使用Infinispan进行缓存(在库模式/过程中的复制集群中),其中数据通常非常相似,但是不同键的数量要大得多比可能的相关数据量还要多。

我担心不必要地创建/复制的数据对象的数量,这些数据对象大多是在不同键下相互复制的。

将缓存分成两部分是我唯一的选择吗?例如

key -> data hash -> data

我唯一的问题是在key -> data hash缓存之前将data has -> data复制到集群的其余部分的可能性。在复制data时(我处理该事件),我需要key在那里。

或者是否有其他可用选项,例如拦截缓存插入以使用这些数据对象的池?

1 个答案:

答案 0 :(得分:1)

没有可让您对数据进行重复数据删除的功能,因此,是的,您需要将其分为两个缓存。您可以写your own interceptor,但那里有狮子。您是否会遍历所有本地条目以找到匹配项?

如果将非事务性缓存与同步复制一起使用,则可以先更新dataId -> data缓存,然后再更新key -> dataId。到第二个操作被调用时,第一个写操作已复制到所有节点。