我正在使用带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中选择TTL(devicename); //给我4126秒
答案 0 :(得分:0)
在下面的链接中,提供了TTL的说明。
https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html
" TTL数据的精度为1秒,在服务器上计算。因此,一个非常小的TTL可能没有多大意义。而且,服务器上的时钟应该同步;否则可以观察到精度降低,因为到期时间是在接收初始插入的主要主机上计算的,然后由群集上的其他主机解释。"
阅读完之后,我可以通过在相应的节点(机器上)设置适当的时间来解决。