Neo4j PHP获取wirte锁

时间:2013-08-28 05:31:06

标签: neo4j neo4jphp

陷入大麻烦,

有谁能告诉我,我怎么能通过密码获得写锁。 注意:我将使用REST API,所以我的密码将在php中。

已编辑: 情形:

我正在使用Neo4j REST服务器和PHP来访问它。

现在我创建了一个节点,说'counter-node',它会生成新的用户ID。逻辑只是将1添加到先前的值。

现在如果两个用户同时进入,则第一个用户在将其更新为1之前读取“计数器节点”值,然后第二个用户读取它。因此,“反节点”中的值不符合预期。

任何帮助

2 个答案:

答案 0 :(得分:1)

您不需要显式获取写锁。您在事务中修改的所有节点都会自动写入锁定。

所以如果你在你的逻辑中这样做:

start tx
increment counter node
read the value of the counter node and set it on the user node as ID
commit tx

没有两个用户会获得相同的ID。

答案 1 :(得分:0)

Neo4j的热门APOC插件提供了一系列明确的锁定程序,可以通过Cypher调用,例如call apoc.lock.nodes([nodes])

neo4j-contrib.github.io/neo4j-apoc-procedures/#_locking

了解详情

注意:据我所知,Cypher本身并不存在此功能,因此APOC可能是您最好的选择。