我在节点中有一个点属性,我想在每次玩家获得积分时递增。由于可以同时进行多个更新,因此我希望有一个增量更新查询以避免并发问题。例如如果两个请求同时获取节点并将每个点更新了+5,那么它将增加+5而不是正确的+10。
我看到github中存在一个与此相关的问题#768,https://github.com/neo4j/community/issues/768,但除了在应用程序端实现乐观并发或单个队列之外,我没有看到答案。 / p>
如果乐观并发是答案,那么我可以利用数据库级别的某些东西吗?
答案 0 :(得分:0)
您可以做的是在阅读之前锁定节点,如下所示:
Transaction tx = db.beginTx(); try { tx.acquireWriteLock( myNode ); int count = (Integer) myNode.getProperty( "count", 0 ); myNode.setProperty( "count", count + 5 ); tx.success(); } finally { tx.finish(); }
答案 1 :(得分:0)
我找不到我提出的github问题(github repo已经移动了。)但是,答案是,这不会被添加到REST API中。