Aerospike:获取更新插入时间,而无需显式存储具有 TTL 的记录



Aerospike非常快速和可靠,但价格昂贵。对我们来说,成本取决于存储的数据量。

我们希望能够根据更新插入时间查询记录。目前,当我们添加或更新记录时,我们将 bin 设置为当前纪元时间,并可以在此 bin 上运行扫描查询。

我突然想到,Aerospike 知道何时根据更新插入的时间使记录过期,并且由于我们可以通过简单的 UDF 从记录元数据中查询 TTL 值,因此可以使用 TTL 推断记录的更新插入时间。我们有效地利用空间来存储已知的值。

是否可以通过 UDF 访问记录创建或到期时间,而无需显式存储它?

此时,Aerospike 仅将无效时间与记录(记录过期的时间)一起存储。因此,不幸的是,更新插入时间不可用。不过,请继续关注,因为我听说有一些计划提供一些可能对您有所帮助的新功能。(我是Aerospike的OPS/支持团队的一员)。

无效时间:跟踪系统中密钥的寿命。这是密钥应过期并由逐出子系统使用的时间。

所以TTL是从虚空时间派生出来的。

当我们从记录中获取 ttl 时,我们只能计算无效时间(现在 + ttl)

根据您拥有的内容,我认为只有当您向所有记录添加相同数量的过期时间时,您才能从 ttl 评估更新插入时间,比如CONSTANT_EXPIRATION_TIME。

在这种情况下

upsert_time = now - (CONSTANT_EXPIRATION_TIME - ttl)

最新更新