aerospike 如何处理多个连接创建的相同记录?

How aerospike handle creation of same record by multiple connections?

如果两个连接试图创建同一条记录,aerospike 如何确保只有其中一个能够成功执行? Aerospike 为单个记录上的操作维护一个队列。因此,如果一条记录存在,则对该记录的所有操作都可以串行执行。 但是如果有一个创建操作被多个连接调用会怎样呢?

如你所说,由于Aerospike是序列化事务的,如果使用create only client policy(例如java中的recordExistsAction),第二个会失败,但默认情况下,第二个 "create" 将被视为更新...

交易将被停放的队列是rwHash中的交易待定列表。附件是创建(而非更新)事务如何在 4.7 发布之前的服务器版本中进行的流程图。

rwHash 数据结构: