【发布时间】:2016-08-13 00:11:28
【问题描述】:
我将 datastax 与 cassandra 一起使用。我希望在插入 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 列组成:设备(uuid)、数据源名称(文本)、设备名称(文本)、上次更新时间(时间戳)。
如果我查询某个字段的 TTL,它会显示 4126 秒,这是错误的。 //从 device_activity 中选择 TTL(devicename); // 给我 4126 秒
【问题讨论】:
-
最终执行的查询是 INSERT INTO devicecloud_test.device_activity(device,lastupdatedtime,devicename,datasourcename) VALUES (ca5cff1f-b23a-426a-ba3f-f13300a2d8e6,1461150305100,'TestBench162','259642460471175使用 TTL 60;
-
不明白,Cassandra使用的TTL,是4126还是60秒?
-
我给了 900 秒,但 cassandra 显示给我 4126 秒
-
QueryBuilder.ttl(15* 60) // 在这一行中,我给了 900 秒。
-
在执行之前打印
insertStatement.getQueryString(),看看真正分配了哪个TTL