使用Java,我可以扫描一个Cassandra表并只更新一行的TTL吗?我不想改变任何数据.我只想扫描Cassandra表并设置几行的TTL.
另外,使用java,我可以设置绝对的TTL.例如(2016-11-22 00:00:00).所以我不想以秒为单位指定TTL,而是指定时间的绝对值.
xma*_*s79 14
卡桑德拉不允许设置TTL值一列,它允许设置列的TTL 值只.
在你想知道为什么你的情况都遇到行 到期,这是因为如果一切当您尝试记录的所有列的值TTLed则行消失SELECT了.
但是,只有在执行时才会INSERT出现这种情况USING TTL.如果你INSERT没有TTL,然后UPDATE用TTL 做一个你仍然会看到行,但是有空值.这里有一些例子和一些问题:
INSERT仅限TTL的示例:CREATE TABLE test (
k text PRIMARY KEY,
v int,
);
INSERT INTO test (k,v) VALUES ('test', 1) USING TTL 10;
... 10 seconds after...
SELECT * FROM test ;
k | v
---------------+---------------
Run Code Online (Sandbox Code Playgroud)
INSERT和TTLed的示例UPDATE:INSERT INTO test (k,v) VALUES ('test', 1) USING TTL 10;
UPDATE test USING TTL 10 SET v=0 WHERE k='test';
... 10 seconds after...
SELECT * FROM test;
k | v
---------------+---------------
Run Code Online (Sandbox Code Playgroud)
INSERT的示例UPDATEINSERT INTO test (k,v) VALUES ('test', 1);
UPDATE test USING TTL 10 SET v=0 WHERE k='test';
... 10 seconds after...
SELECT * FROM test;
k | v
---------------+---------------
test | null
Run Code Online (Sandbox Code Playgroud)
现在您可以看到解决问题的唯一方法是使用新的TTL 重写行的所有列的所有值.
此外,无法指定明确的到期日期,但您可以使用简单的数学(如其他建议的那样)在几秒钟内获得简单的TTL值.
查看有关数据过期的官方文档.并且不要忘记查看DELETE部分以更新TTL.
HTH.
| 归档时间: |
|
| 查看次数: |
8687 次 |
| 最近记录: |