我正在使用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
答案 0 :(得分:2)
如果您不使用近缓存并禁用缓存值。例如:
<hz:map name="map"
backup-count="1"
max-size="0"
read-backup-data="true"
cache-value="false"/>
然后无论如何,Hazelcast将始终返回实际值的副本。
如果你保持cache-value = true,那么Hazelcast会缓存该值的对象版本,并在本地读取时返回相同的副本。通过本地读取,我的意思是启动读取的成员,并且密钥的所有者是相同的。