📜  Cassandra 中列的生存时间 (TTL)

📅  最后修改于: 2021-09-09 10:29:23             🧑  作者: Mango

在本文中,我们将讨论如何使用生存时间 (TTL)命令进行插入和更新,以及如何确定现有列的过期时间限制。
在 Cassandra 中,生存时间 (TTL) 起着重要作用,而如果我们想设置列的时间限制并且想在某个时间点后自动删除,那么此时使用 TTL 关键字来定义时间非常有用特定列的限制。

  1. 在 Cassandra 中,INSERT 和 UPDATE 命令都支持设置列中数据过期的时间。
  2. 它用于设置特定时间段的时间限制。通过 USING TTL 子句,我们可以在插入时设置 TTL 值。
  3. 我们可以使用 TTL函数来获取特定选定查询的剩余时间。
  4. 在插入点,我们可以使用 TTL 子句设置插入数据的过期限制。让我们考虑一下,如果我们要将过期限制设置为两天,那么我们需要定义它的 TTL 值。
  5. 通过使用 TTL,我们可以将有效期设置为两天,TTL 的值为 172800 秒。让我们通过一个例子来理解。

表:student_Registration
使用以下 CQL 查询创建表。

CREATE TABLE student_Registration(
Id int PRIMARY KEY,
Name text,
Event text
);

使用 TTL 插入:
要使用 TTL 插入数据,请使用以下 CQL 查询。

INSERT INTO student_Registration (Id, Name, Event) 
       VALUES (101, 'Ashish', 'Ninza') USING TTL 172800;
INSERT INTO student_Registration (Id, Name, Event) 
       VALUES (102, 'Ashish', 'Code') USING TTL 172800;
INSERT INTO student_Registration (Id, Name, Event) 
       VALUES (103, 'Aksh', 'Ninza') USING TTL 172800; 

输出:

Id Name Event
101 Ashish Ninza
102 Ashish Code
103 Aksh Ninza

现在,要确定特定列的剩余到期时间,请使用以下 CQL 查询。

SELECT TTL (Name) 
from student_Registration 
WHERE Id = 101; 

输出:

ttl(Name)
172700

由于 TTL 时间限制,当您再次检查其 TTL 值时,它会减少。现在,使用以下 CQL 查询再次检查。

SELECT TTL (Name) 
from student_Registration 
WHERE Id = 101; 

输出:

ttl(Name)
172500

使用 TTL 更新:
现在,如果我们想延长时间限制,那么我们可以借助 UPDATE 命令和 USING TTL 关键字进行扩展。我们来看一下。要将时间限制延长 3 天并将名称更新为“rana”,然后使用以下 CQL 查询。

UPDATE student_Registration
USING TTL 259200 
SET Name = 'Rana' 
WHERE Id= 102 

输出:

Id Name Event
101 Ashish Ninza
102 Rana Code
103 Aksh Ninza

SELECT TTL (Name) 
from student_Registration 
WHERE Id = 102; 

输出:

ttl(Name)
259100

使用 TTL 删除列:
要删除特定的现有列,请使用以下 CQL 查询。

UPDATE student_Registration
USING TTL 0 
SET Name = 'Ashish' 
WHERE Id = 102; 

注意:我们可以使用 TTL 的默认值为整个表设置默认 TTL。

参考 – https://docs.datastax.com/