我们正在执行以下操作来更新计数器的值,现在我们想知道是否有一种直接的方法可以立即获取更新的计数器值。
mutator.incrementCounter(rowid1,“cf1”,“counter1”,value);
答案 0 :(得分:7)
Cassandra thrift API中没有单一的'incrementAndGet'操作。
Cassandra的计数器最终是一致的,非原子的。需要Fragile ConsistencyLevel.ALL操作才能获得“保证更新”计数器值,即执行一致读取。 ConsistencyLevel.QUORUM是不够的(在计数器设计文档中指定:https://issues.apache.org/jira/secure/attachment/12459754/Partitionedcountersdesigndoc.pdf)。
要实现看起来一致的incrementAndGet方法,您可能首先需要读取计数器值,然后发出增量突变,并返回(读取)价值+公司。
例如,如果前一个计数器值为10到20(在不同的副本上),并且一个为其添加50,则read-before-increment将返回60或70.并且read-after-increment可能仍返回10或20。
答案 1 :(得分:0)
唯一的方法就是查询它。 Cassandra中没有增量读取功能。