Hazelcast 3.4:如何避免从近缓存反序列化并获取原始项

Hazelcast 3.4:如何避免从近缓存反序列化并获取原始项,hazelcast,Hazelcast,从版本3.X开始,Hazelcast返回原始对象的副本,该副本存储在启用近缓存的分布式映射中,而版本2.5则返回原始对象 这种行为允许本地修改存储在映射中的条目,并且GET操作非常快速 现在,在3.X版本中,它将二进制对象存储在近缓存中,并在每个GET上进行反序列化,这将显著影响性能。 是否可以将Hazelcast 3.4.2映射的近缓存配置为返回对原始对象的引用,而不是原始条目的副本?我认为没有办法获取原始条目。 为了避免反序列化,您可以尝试设置 <in-memory-format>

从版本3.X开始,Hazelcast返回原始对象的副本,该副本存储在启用近缓存的分布式映射中,而版本2.5则返回原始对象

这种行为允许本地修改存储在映射中的条目,并且GET操作非常快速

现在,在3.X版本中,它将二进制对象存储在近缓存中,并在每个GET上进行反序列化,这将显著影响性能。
是否可以将Hazelcast 3.4.2映射的近缓存配置为返回对原始对象的引用,而不是原始条目的副本?

我认为没有办法获取原始条目。 为了避免反序列化,您可以尝试设置

<in-memory-format>OBJECT</in-memory-format> 
对象
配置中。通过这种方式,hazelcast将数据以对象形式存储在
中,无需反序列化。但我想只有在客户端配置了
时,这才有效,因为如果
在节点上,您仍然需要序列化才能将对象从节点传递到客户端。

部分,如果您设置

  • 对象
  • true
您应该返回相同的实例


这对客户端和成员都有效。

根据他们的文档,在这种情况下,实体将被反序列化并再次序列化-额外的性能cost@Dmitry我已经测试过了,它很有效。你在文件里什么地方看到的?此外,在调试Hazelcast代码时,可以看到NearCache内部有一个ConcurrentMap,它存储CacheRecord的值,其中值存储为二进制。@Dmitry,它描述的是
map
,而不是
near cache
的行为。确保上面的两个设置在
部分中,而不是直接在
部分中。哦,您的意思是在内存表示中配置近缓存。成功了!但是,在近缓存文档中的示例中,省略了此配置参数。非常感谢。请小心共享可变对象:)