Apache Ignite:缓存项锁定使用

Apache Ignite: Cache item lock usage

我需要在 JVM 的不同线程上修改缓存项,因此我需要确保所有项都按顺序安全地修改。所以我认为如果线程使用缓存键创建或获取锁并在工作完成后释放它就可以了。像这样:

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();
            }

        }

所以我的问题是:创建垃圾锁项目是否明智?内存或网络方面是否有任何重大成本?

或者,如果有任何其他方法,您能指导我吗?

感谢

这是 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