2012-05-09 3 views
0

私はHazelcast 2.1と Spring 3.1でSpring @Cacheableアノテーションを使用しています。Hazelcastのマップからクローンオブジェクトを返します

@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

答えて

2

キャッシュに近い値を使用せず、キャッシュ値を無効にする場合は、例:

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

次に、Hazelcastは常に実際の値のコピーを返します。

cache-value = trueのままにすると、Hazelcastはオブジェクトバージョンの値をキャッシュし、ローカル読み取り時に同じコピーを返します。ローカルで読んだことは、読み込みが開始され、キーの所有者が同じであるメンバーを意味します。

+0

ありがとう@Fuad。それは私が必要としていたものです。私はあなたの答えの後にドキュメンテーションに「キャッシュ価値」についての部分があるが、別の章(Common Gotchas)にあることに気づいた。関連する章でこの種の設定を見て、見つけやすいようにするのはすばらしいことです – emrahkocaman

関連する問題