在Cassandra中设置TTL

在Cassandra中设置TTL,cassandra,cassandra-3.0,ttl,Cassandra,Cassandra 3.0,Ttl,在Cassandra中更新TTL时是否需要设置一些内容 我有一张这样的桌子 CREATE TABLE session( tokenId text PRIMARY KEY, username text); INSERT INTO session(tokenId, username) VALUES ('123123123123','admin') USING TTL 30; UPDATE session USING TTL 30 SET username = 'admin' WHERE

在Cassandra中更新TTL时是否需要设置一些内容

我有一张这样的桌子

CREATE TABLE session(
  tokenId text PRIMARY KEY,
  username text);
INSERT INTO session(tokenId, username) VALUES ('123123123123','admin') USING TTL 30;
UPDATE session USING TTL 30 SET username = 'admin' WHERE tokenid = '123123123123' IF EXISTS;
我像这样插入数据

CREATE TABLE session(
  tokenId text PRIMARY KEY,
  username text);
INSERT INTO session(tokenId, username) VALUES ('123123123123','admin') USING TTL 30;
UPDATE session USING TTL 30 SET username = 'admin' WHERE tokenid = '123123123123' IF EXISTS;
我像这样更新TTL

CREATE TABLE session(
  tokenId text PRIMARY KEY,
  username text);
INSERT INTO session(tokenId, username) VALUES ('123123123123','admin') USING TTL 30;
UPDATE session USING TTL 30 SET username = 'admin' WHERE tokenid = '123123123123' IF EXISTS;

如果它让我强制更新“用户名”,那么更新需要一个集合,是否可以只更新TTL?

这是一个非常棘手的问题。让我尽力解释我的理解

基本上,cassandra不允许您为一行更新TTL。如前所述,每个列都保留TTL。回到您的示例,带有
TTL
值的
insert
语句将为insert语句中的所有列创建相同的TTL。同时,
update
语句仅适用于预期列(例如,
username
)。希望能有帮助

INSERT和UPDATE命令都支持为中的数据设置时间 要过期的列。使用CQL设置到期时间(TTL)


这是一个非常棘手的问题。让我尽力解释我的理解

基本上,cassandra不允许您为一行更新TTL。如前所述,每个列都保留TTL。回到您的示例,带有
TTL
值的
insert
语句将为insert语句中的所有列创建相同的TTL。同时,
update
语句仅适用于预期列(例如,
username
)。希望能有帮助

INSERT和UPDATE命令都支持为中的数据设置时间 要过期的列。使用CQL设置到期时间(TTL)


感谢您的解释,但我仍然无法完全理解,我的问题是,是否可以只更新TTL而不更新任何列?答案是否。由于TTL是按列维护的,因此我们必须提及此类更新的列名。根据update语句的当前语法,它必须是=。即使我们可以传递相同的值,但它仍然需要存在。我假设您正在寻找类似于使用TTL为where…更新表名的东西,但是当前的CQL语法不支持它。感谢您的解释:)哦,对不起,我刚刚再次检查,实际上主键没有TTL概念(这是我的错误,对此表示抱歉)。一旦所有非主键过期,该行将被删除。您可以使用ttl功能检查列是否已过期,例如从会话中选择令牌ID、ttl(用户名)。不客气,希望现在就清除。很抱歉混淆感谢您的解释,但我仍然无法完全理解,我的问题是,是否可以只更新TTL而不更新任何列?答案是否。由于TTL是按列维护的,因此我们必须提及此类更新的列名。根据update语句的当前语法,它必须是=。即使我们可以传递相同的值,但它仍然需要存在。我假设您正在寻找类似于使用TTL为where…更新表名的东西,但是当前的CQL语法不支持它。感谢您的解释:)哦,对不起,我刚刚再次检查,实际上主键没有TTL概念(这是我的错误,对此表示抱歉)。一旦所有非主键过期,该行将被删除。您可以使用ttl功能检查列是否已过期,例如从会话中选择令牌ID、ttl(用户名)。不客气,希望现在就清除。抱歉搞混了