Cassandra TTL无法正常工作

时间:2016-04-20 10:58:56

标签: cassandra datastax ttl

我正在使用带cassandra的datastax。我希望在插入15分钟后自动删除一行。但这一排仍然存在。

我的代码如下:

Insert insertStatement = QueryBuilder.insertInto(keySpace, "device_activity");
        insertStatement.using(QueryBuilder.ttl(15* 60));
        insertStatement.value("device", UUID.fromString(persistData.getSourceId()));
        insertStatement.value("lastupdatedtime", persistData.getLastUpdatedTime());
        insertStatement.value("devicename", persistData.getDeviceName());
        insertStatement.value("datasourcename", persistData.getDatasourceName());

该表由4列组成:device(uuid),datasourcename(text),devicename(text),lastupdatedtime(timestamp)。

如果我查询某个字段的TTL,它会显示4126秒,这是错误的。 //从device_activity中选择T​​TL(devicename); //给我4126秒

1 个答案:

答案 0 :(得分:0)

在下面的链接中,提供了TTL的说明。

https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html

" TTL数据的精度为1秒,在服务器上计算。因此,一个非常小的TTL可能没有多大意义。而且,服务器上的时钟应该同步;否则可以观察到精度降低,因为到期时间是在接收初始插入的主要主机上计算的,然后由群集上的其他主机解释。"

阅读完之后,我可以通过在相应的节点(机器上)设置适当的时间来解决。