【问题标题】:Return a cloned object from Map in Hazelcast从 Hazelcast 中的 Map 返回一个克隆的对象
【发布时间】:2012-05-17 18:09:33
【问题描述】:

我正在使用带有 Hazelcast 2.1 的 Spring @Cacheable 注释和 春季 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

【问题讨论】:

    标签: spring distributed-caching hazelcast


    【解决方案1】:

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

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

    那么 Hazelcast 无论如何都会返回实际值的副本。

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

    【讨论】:

    • 感谢@Fuad。这正是我所需要的。我注意到在您回答之后的文档中有关于“缓存值”的部分,但它在不同的章节中(Common Gotchas)。很高兴在相关章节中看到这种配置内容,以便更容易找到
    猜你喜欢
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2018-03-01
    • 2015-06-23
    • 2013-10-11
    • 2015-04-25
    相关资源
    最近更新 更多