在Cassandra中删除记录后,如何重新插入带有计数器列的记录?

在Cassandra中删除记录后,如何重新插入带有计数器列的记录?,cassandra,counter,Cassandra,Counter,我在Cassandra中创建了一个带有计数器列的表,如下所示: create table test_count( pk int, count counter, primary key (pk) ); 然后我更新了一些记录,比如: update test_count set count = count + 1 where pk = 1; 然后我想将计数重置为0,但cql中没有重置命令,因此我删除了记录: delete from test_count where pk =

我在Cassandra中创建了一个带有计数器列的表,如下所示:

create table test_count(
    pk int,
    count counter,
    primary key (pk)
);
然后我更新了一些记录,比如:

update test_count set count = count + 1 where pk = 1;
然后我想将计数重置为0,但cql中没有重置命令,因此我删除了记录:

delete from test_count where pk = 1;
然后我重新执行更新CQL,但是当我
从test\u count
中选择*时,没有
pk=1
的记录,所以这是Cassandra的错误吗?删除带有计数器列的记录时,它会永远消失吗?如何将计数列重置为0?如何重新插入带有计数器列的记录

  • 您可以首先查询计数器的当前值,然后发出更新以减去该金额

  • 您可以删除计数器,然后使用其他行键启动新计数器。您将不再尝试使用原始计数器。使用这种方法,您可能希望按天或按周对计数器进行分区,以便在新的一天开始时,您可以从一组新的清零计数器开始


  • 从测试计数中删除,其中pk=1;这里的查询意味着您正在删除pk=1的所有记录。这就是为什么您的记录被全部删除。如果您想将计数重置为0,可以尝试设置计数=0。谢谢,但在cassandra中,您只能写入set count=count+/-*,不允许设置计数=0,而且cassandra不允许您插入带有计数器列的记录,您只需更新,这就是为什么我在删除后使用update而不是insert。在我运行delete cql之前,如果记录不存在,update将插入记录,但在我运行delete之后情况发生了变化。一个选项是,您可以从选择中减去计数,例如,如果您收到的计数为5,则执行类似于此更新测试的操作\u count Set count=count-5,其中pk=1;这将有帮助,甚至感谢,但我有很多记录要重置,查询它们都不好,我只想重新计算当天的计数,所以必须有相同的行键…似乎我应该放弃使用计数器列。