Txn 方法

    txn 请求增加键值存储的修订版本并为每个完成的请求生成带有相同修订版本的事件。

    不容许在一个 txn 中多次修改同一个 key。

    消息体

    1. message TxnRequest {
    2. // compare 是断言列表,体现为条件的联合。
    3. // 如果比较成功,那么成功请求将被按顺序处理,而应答将按顺序包含他们对应的应答。
    4. // 如果比较失败,那么失败请求将被按顺序处理,而应答将按顺序包含他们对应的应答。
    5. repeated Compare compare = 1;
    6. // 成功请求列表,当比较评估为 true 时将被应用。
    7. repeated RequestOp success = 2;
    8. // 失败请求列表,当比较评估为 false 时将被应用。
    9. repeated RequestOp failure = 3;
    10. }

    应答的消息体是 TxnResponse

    Compare 消息体:

    1. message Compare {
    2. enum CompareResult {
    3. EQUAL = 0;
    4. LESS = 2;
    5. NOT_EQUAL = 3;
    6. }
    7. enum CompareTarget {
    8. VERSION = 0;
    9. CREATE = 1;
    10. MOD = 2;
    11. VALUE= 3;
    12. }
    13. // result 是这个比较的逻辑比较操作
    14. CompareResult result = 1;
    15. // target 是比较要检查的键值字段
    16. CompareTarget target = 2;
    17. // key 是用于比较操作的主题key
    18. bytes key = 3;
    19. oneof target_union {
    20. int64 version = 4;
    21. // create_revision 是给定 key 的创建修订版本
    22. int64 create_revision = 5;
    23. // mod_revision 是给定 key 的最后修改修订版本
    24. int64 mod_revision = 6;
    25. // value 是给定 key 的值,以 bytes 的形式
    26. bytes value = 7;
    27. }
    28. }

    ResponseOp 消息体:

    1. message ResponseOp {
    2. // response 是事务返回的应答类型的联合
    3. oneof response {
    4. RangeResponse response_range = 1;
    5. PutResponse response_put = 2;
    6. DeleteRangeResponse response_delete_range = 3;
    7. }