从Hazelcast中的Map返回克隆对象

时间:2012-05-09 08:33:13

标签: spring distributed-caching hazelcast

我正在使用Spring @Cacheable注释与Hazelcast 2.1和 春季3.1。

@Cacheable("testCache")
public MyObject testMethod(int testParam);

//After method call
MyObject test = Hazelcast.getMap("testCache").get("key")
test.setSomeProp()   //This line causes an update to the cache since it is reference.

是否可以从地图而不是 Hazelcast.getMap()中引用返回缓存值的克隆/副本?

即我想要一个像EhCache一样的copyOnRead功能。见EhCache Documentation

1 个答案:

答案 0 :(得分:2)

如果您不使用近缓存并禁用缓存值。例如:

 <hz:map name="map"
            backup-count="1"
            max-size="0"
            read-backup-data="true"
            cache-value="false"/>

然后无论如何,Hazelcast将始终返回实际值的副本。

如果你保持cache-value = true,那么Hazelcast会缓存该值的对象版本,并在本地读取时返回相同的副本。通过本地读取,我的意思是启动读取的成员,并且密钥的所有者是相同的。