覆盖 TTL Cassandra

Override TTL Cassandra

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

谢谢。

我认为它在那个方向上行不通;因为您在 CQL 中而不是在 table 级别指定 TTL。

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

If the table has a default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of null is equivalent to inserting with a TTL of 0.

CQL TTL 覆盖默认值。如果您在 table 级别有 9999 TTL,并在 CQL 中使用 50;将使用 50 个。

参考这里 - http://www.mail-archive.com/user@cassandra.apache.org/msg50873.html

Setting a TTL for a specific column

Use CQL to set the TTL for data.

To change the TTL of a specific column, you must re-insert the data with a new TTL. Cassandra upserts the column with the new TTL, replacing the old value with the old TTL, if any exists.

Setting a TTL for a table

The CQL table definition supports the default_time_to_live property, which applies a specific TTL to each column in the table. After the default_time_to_live TTL value has been exceed, Cassandra tombstones the entire table. Apply this default TTL to a table in CQL using CREATE TABLE or ALTER TABLE.

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

ALTER TABLE table_name
  WITH  default_time_to_live= 0

这将更改 table 级 TTL。

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

Details