【问题标题】:How to make write conditional in Aerospike using Java client如何使用 Java 客户端在 Aerospike 中进行有条件的写入
【发布时间】:2021-05-29 00:07:10
【问题描述】:

如何有条件地写入 aerospike bin?我想从 aerospike bin 中减去值,在这种情况下,我可以使用 Operation.add(-1) 然后如何通过首先检查值以及如果值大于零然后从 bin 中减去 1 来使其在单个事务中发生价值。 请用java客户端建议。

【问题讨论】:

    标签: java caching transactions aerospike


    【解决方案1】:

    在 Java 中使用表达式。客户端源代码是开放的。您可以检查测试代码中的许多示例并进行调整。 https://github.com/aerospike/aerospike-client-java/blob/8a4daba81bb5ab8496523be18e898a2d0ec8aec3/test/src/com/aerospike/test/sync/basic/TestExpOperation.java Java API 文档在这里:https://docs.aerospike.com/apidocs/java/

    你会像这样构建一个表达式:

    // a > 0
     Exp.gt(Exp.intBin("a"), Exp.val(0))  
    

    如果 Exp 计算结果为真,则执行减法运算。

    另外请注意,如果唯一的操作是增量,那么上面显示的过滤器表达式将可以正常工作。如果您将增量与其他操作一起发送,那么它们可以使用 write-expression(在 Aerospike 5.6.0 中引入)。 写表达式类似于:

    Exp.cond(
      Exp.gt(Exp.intBin("a"), Exp.val(0)), Exp.sub(Exp.intBin("a"), 1),
      Exp.unknown())
    

    使用此方法还假定您还希望在此操作失败时执行其他操作,因此您需要使用 EVAL_NO_FAIL 策略。

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 2020-10-01
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多