gpt4 book ai didi

cassandra - 只需在一行上设置 TTL

转载 作者:行者123 更新时间:2023-12-04 05:29:06 29 4
gpt4 key购买 nike

使用 Java,我可以扫描 Cassandra 表并只更新一行的 TTL 吗?我不想更改任何数据。我只想扫描 Cassandra 表并设置几行的 TTL。

另外,使用java,我可以设置绝对的TTL吗?例如 (2016-11-22 00:00:00)。所以我不想以秒为单位指定 TTL,而是指定时间的绝对值。

最佳答案

Cassandra 不允许为 设置 TTL 值行 ,它允许为列设置 TTL 只要。

如果你想知道为什么你 体验 过期,这是因为如果 全部 当您尝试 SELECT 时,记录的所有列的值都是 TTLed 然后该行消失它。

但是,这仅在您执行 INSERT 时才成立。与 USING TTL .如果您 INSERT没有 TTL 然后做一个 UPDATE使用 TTL 您仍然会看到该行,但值为空。以下是一些示例和一些问题:

带有 TTLed INSERT 的示例只要:

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
---------------+---------------

带有 TTLed 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
---------------+---------------

带有非 TTL 的示例 INSERT带有 TTLed UPDATE
INSERT 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

现在你可以看到解决你问题的唯一方法是重写 全部 具有新 TTL 的行中所有列的值。

此外,无法指定明确的到期日期,但您可以在 中获得一个简单的 TTL 值。秒 用简单的数学(如其他人建议的那样)。

看看官方 documentation关于数据过期。不要忘记查看 DELETE用于更新 TTL 的部分。

哈。

关于cassandra - 只需在一行上设置 TTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40730510/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com