更新时间和离开卡桑德拉行的剩余时间

Update time and remaining time to leave for cassandra row

我如何知道某行何时被写入,何时被丢弃? 我搜索了该信息,但找不到。

谢谢。

使用cql中的writetime方法获取列的写入时间。

select writetime(column) from tablename where clause

SELECT 语句中使用 WRITETIME 函数将 return date/time 在 微秒 内写入该列到数据库。

例如:

select writetime(login) from user;

会 return 像:

writetime(login)
------------------
1439082127862000

当您插入以秒为单位的 TTL(生存时间)的行时,例如:

INSERT INTO user(login) VALUES ('admin') USING TTL 60;

SELECT 语句中使用 TTL 函数将 return 插入的数据必须存在 的数量。

例如:

select ttl(login) from user;

会 return 像:

ttl(login)
------------------
59

如果您不指定 TTL,上述查询将 return:

ttl(login)
------------------
null


如果您使用的是 Casandra 2.2+,则可以创建一个用户定义函数 (UDF) 以将 WRITETIME 编辑的微秒 return 转换为更易读的格式。

要使用用户定义的函数,enable_user_defined_functions 必须在 cassandra.yaml 文件中设置为 true

然后,在 cqlsh 中创建如下函数:

CREATE OR REPLACE FUNCTION microsToFormattedDate (input bigint) CALLED ON NULL INPUT RETURNS text LANGUAGE java AS 'return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS").format( new java.util.Date(input / 1000) );';

用户定义的函数是在键空间中定义的。如果没有定义键空间,则使用当前键空间。

现在使用函数:

select microsToFormattedDate( writetime(login) ) from user;

会不会return像这样:

 social.microstoformatteddate(writetime(login))
-----------------------------------------------
 2015-08-08 20:02:07,862