Cassandra 在表达列时是否考虑毫秒?

Does Cassandra considers millisecond while expring a column?

我知道 C* 的最小 TTL 时间是 1 秒。但是它是否考虑了列过期时插入时间的毫秒部分? 例如我在 11:05:06:320 am 插入了一条记录,时间为 1 秒。 我预计它会在 11:05:07:320 点过期 或者它将在 11:05:07am 时过期?

在 11:05:06:320 处插入且 TTL 为 1 秒的记录将在 11:05:07:000 处过期。

Cassandra 为每个即将到期的单元计算 localExpirationTime,这是以秒为单位的本地时间加上 TTL [1]。在您的示例中,它将是 11:05:07。当 Cassandra 决定一个细胞是否存活时,它会检查当前时间是否严格小于过期时间 [2]。因此,从 11:05:07 开始,我们的单元将被视为已过期。

  1. https://github.com/apache/cassandra/blob/cassandra-3.11/src/java/org/apache/cassandra/db/ExpirationDateOverflowHandling.java#L118
  2. https://github.com/apache/cassandra/blob/cassandra-3.11/src/java/org/apache/cassandra/db/LivenessInfo.java#L330