2016-08-11 29 views
0

JVMの異なるスレッドでキャッシュ項目を変更する必要があるので、すべての項目が順序正しく安全に変更されていることを確認する必要があります。だから、スレッドがキャッシュキーでロックを作成または取得し、作業が終了した後にスレッドを解放すればOKだと思った。そのように:Apache Ignite:キャッシュ項目のロックの使用

if(this.igniteCache.lock(k).tryLock()){ 
       try { 
        if(this.igniteCache.containsKey(k)){ 
         List value=this.igniteCache.get(k); 
         value.addAll(v); 
         this.igniteCache.put(k, value); 
        } 
      } finally{ 
       this.igniteCache.lock(k).unlock(); 
      } 

     } 

私の質問です:それはマックロックアイテムを作成することは賢明ですか?メモリやネットワーク側に大きなコストがかかりますか?

他の方法がある場合は、私にこれを指示できますか?

Thxを

答えて

0

これはPESSIMISTIC/REPEATABLE_READトランザクションを使用する典型的なケースです。 Igniteに含まれているCacheTransactionExample [1]を参照できます(deposit()メソッドを参照)。

また、Igniteのトランザクションサポートの詳細については、[2]を参照してください。

[1] https://github.com/apache/ignite/blob/master/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheTransactionExample.java

[2] https://apacheignite.readme.io/docs/transactions

関連する問題