2016-11-23 155 views
1

我想了解HazelCast Cache使用情况HazelCast缓存

我有哪里需要将源数据的主机之间共享的分布式环境。我正在使用HazelCast ListMap来分发数据。 源数据不断变化。我可以通过HazelCast List/Map获得所有主机的最新数据。如何在HazelCast列表/地图上使用HazelCast缓存。

+0

我很抱歉,但我不认为我理解了这个问题的任何内容。你可以在问题中加入几个Javadoc链接,比如Hazelcast Cache是​​什么意思?的JCache? NearCache? IMAP? – noctarius

+0

仍不确定你想要做什么。将IList和IMap存储在JCache中? – noctarius

+0

也许吧。是否有可能获得两者中最好的?对JCache来说,IList和IMap的结果如何?所以1)我得到最新的数据2)使用缓存?或者它必须是其中一个,但不是两个? – johnsam

回答

6

Hazelcast JCache是​​一个独立的数据结构,像IMap和IList。他们之间没有任何联系。

如果您想要减少网络流量,则IMap有自己的(本地)缓存,称为Near Cache。请查看IMap的Near Cache文档,看看它是否符合您的要求。

我认为IList没有这样的机制。

+1

感谢您的信息。靠近缓存文件说:“临近缓存打破了强大的一致性保证;您可能正在读取陈旧的数据。”尽管我的访问权限的90%被读取。由于这个警告,我担心我会得到过时的数据,我仍然无法使用Near Cache。真的吗?此外,它默认说“每个map.get(k)将是一个远程操作”,这是否也是真的hazelcastinstance.getList(k)操作? – johnsam

+0

事实上,我的用例是有一个写主机,所有休息主机都会读。由于数据有时会发生变化,我仍然担心“NearCache”会导致读者获得过时的数据。我的担忧是否有效? – johnsam

+1

抱歉,超级迟到的回复。 NearCache中的数据可能过时了一段时间。这是有一个缓存的权衡。在Hazelcast 3.8中,我们改进了Near Cache的“一致性”保证。所以有一个修复机制,最终可以修复丢失分区等罕见边缘情况下的任何陈旧数据。 此外,您可以在近缓存数据上使用TTL,因此您可以定义缓存数据的最大“过时窗口”。 – Donnerbart