覆盖TTL Cassandra

时间:2017-03-24 10:29:40

标签: cassandra cql ttl

我正在为我的应用程序使用Cassandra数据库,我正在为每个请求设置一个TTL。出于测试目的,我正在使用另一个数据库(相同的模式,但在本地),我愿意保留数据,我想知道是否有一种方法来覆盖ttl,我不知道,通过在创建时将其设置为默认值桌子或类似的东西。

谢谢。

2 个答案:

答案 0 :(得分:0)

我认为它不适合这个方向;因为您在CQL中指定TTL而不是在表级别。

http://cassandra.apache.org/doc/latest/cql/dml.html

  

如果表具有default_time_to_live,则TTL为0将删除插入或更新值的TTL。 TTL为null相当于插入TTL为0。

CQL TTL会覆盖默认值。如果你在表级有9999 TTL,在CQL中使用50;将使用50。

请参阅此处 - http://www.mail-archive.com/user@cassandra.apache.org/msg50873.html

答案 1 :(得分:0)

  

为特定列设置TTL

     

使用CQL设置数据的TTL。

     

要更改特定列的TTL,必须重新插入数据   用新的TTL。 Cassandra用新的TTL插入了该列,   用旧TTL替换旧值(如果存在)。

     

为表格设置TTL

     

CQL表定义支持default_time_to_live属性,   它将特定的TTL应用于表中的每一列。之后   default_time_to_live TTL值已经超过,Cassandra墓碑   整个桌子。使用此方法将此默认TTL应用于CQL中的表   CREATE TABLE或ALTER TABLE。

如果您的表在本地环境中使用的TTL值不等于0

ALTER TABLE table_name
  WITH  default_time_to_live= 0

这会改变表级TTL。

如果设置了列级别TTL,则更改代码以插入带有0或更高TTL的记录。

Details