在Cassandra中,可以设置列的保留时间(Time To Live),当该列超过保留时间后,会下一次读取中被墓碑(Tombstone)标记,然后保留一个垃圾回收周期(表属性gc_grace_seconds设置),最后被压缩进程或修复进程自动移除。
1、如果创建表时指定default_time_to_live属性,则表中所有列列使用指定值,否则使用默认值default_time_to_live=0。
2、如果插入记录时指定TTL,则插入操作所有涉及的列的保留时间为指定TTL值(从插入操作执行开始计算)
3、如果更新记录时指定TTL,则更新操作设计到的列的保留时间未指定TTL值(从更新操作执行开始计算)
演示Demo:
=================================== ## 在创建表时设置表级别默认保留时间 CREATE TABLE users ( user_name text primary key, user_psw text, user_info text, ) WITH default_time_to_live=300; =================================== ## 插入记录时设置保留时间 INSERT INTO users(user_name, user_psw,user_info) VALUES ('cbrown', 'ch@ngem4a','this is cbrown') USING TTL 600; =================================== ## 更新记录时设置保留时间 UPDATE users USING TTL 600 SET user_psw = 'ch@ngem4a' WHERE user_name = 'cbrown'; =================================== ## 查看列的保留时间 SELECT user_name, user_psw, TTL(user_psw) AS user_psw_ttl, user_info, TTL(user_info) AS user_info_ttl from users
参考资料:
https://docs.datastax.com/en/archived/cql/3.1/cql/cql_using/use_expire_c.html
https://docs.datastax.com/en/archived/cql/3.1/cql/cql_reference/tabProp.html#tabProp__cql-default-ttl