如何一次性将aerospike中所有记录的TTL更新为最长有效期限?
- 内容介绍
- 文章标签
- 相关推荐
本文共计488个文字,预计阅读时间需要2分钟。
我陷入了一种困境,我已经初步将一个名为default-ttl的值设置为30天。理论上,有大约500万个数据(30天计算)的ttl值。实际上,我需要的是ttl应为零(0),但It(ttl-30d)保持未知或无法识别。因此,现在我想要使用新的ttl设置。
default-ttl到30天.有大约500万个数据(30天计算)的ttl值.实际上,我的要求是ttl应为零(0),但It(ttl-30d)保持不知情或无法识别.
所以,现在我想用新的ttl值(零)更新prev(旧)500万数据.
我已经检查/尝试了“set-disable-eviction true”,但它无法正常工作,它正在根据(旧)ttl-value删除数据.
我该如何克服这一点? (我想检索删除的数据,我该怎么办?).
谁来帮帮我.
首先, eviction和到期是两种不同的机制.您可以通过各种方式禁用驱逐,例如您使用的set-disable-eviction配置参数.您无法禁用已过期记录的清除.有一个很好的知识库
FAQ What are Expiration, Eviction and Stop-Writes?.不幸的是,如果他们的空闲时间是过去的话,已经清理的过期记录就会消失.如果这些记录仅被驱逐(即由于跨越名称空间
high-water mark的内存或磁盘而在其无效时间之前被删除),您可以冷启动您的节点,那些带有未来TTL的记录将返回.如果他们是
durably deleted或他们的TTL过去(这些记录被跳过),他们将不会返回.
至于重置TTL,最简单的方法是通过使用扫描应用于命名空间中所有记录的record UDF来完成此操作.
UDF适合您的情况非常简单:
ttl.lua
function to_zero_ttl(rec) local rec_ttl = record.ttl(rec) if rec_ttl > 0 then record.set_ttl(rec, -1) aerospike:update(rec) end end
在AQL:
$aql Aerospike Query Client Version 3.12.0 C Client Version 4.1.4 Copyright 2012-2017 Aerospike. All rights reserved. aql> register module './ttl.lua' OK, 1 module added. aql> execute ttl.to_zero_ttl() on test.foo
本文共计488个文字,预计阅读时间需要2分钟。
我陷入了一种困境,我已经初步将一个名为default-ttl的值设置为30天。理论上,有大约500万个数据(30天计算)的ttl值。实际上,我需要的是ttl应为零(0),但It(ttl-30d)保持未知或无法识别。因此,现在我想要使用新的ttl设置。
default-ttl到30天.有大约500万个数据(30天计算)的ttl值.实际上,我的要求是ttl应为零(0),但It(ttl-30d)保持不知情或无法识别.
所以,现在我想用新的ttl值(零)更新prev(旧)500万数据.
我已经检查/尝试了“set-disable-eviction true”,但它无法正常工作,它正在根据(旧)ttl-value删除数据.
我该如何克服这一点? (我想检索删除的数据,我该怎么办?).
谁来帮帮我.
首先, eviction和到期是两种不同的机制.您可以通过各种方式禁用驱逐,例如您使用的set-disable-eviction配置参数.您无法禁用已过期记录的清除.有一个很好的知识库
FAQ What are Expiration, Eviction and Stop-Writes?.不幸的是,如果他们的空闲时间是过去的话,已经清理的过期记录就会消失.如果这些记录仅被驱逐(即由于跨越名称空间
high-water mark的内存或磁盘而在其无效时间之前被删除),您可以冷启动您的节点,那些带有未来TTL的记录将返回.如果他们是
durably deleted或他们的TTL过去(这些记录被跳过),他们将不会返回.
至于重置TTL,最简单的方法是通过使用扫描应用于命名空间中所有记录的record UDF来完成此操作.
UDF适合您的情况非常简单:
ttl.lua
function to_zero_ttl(rec) local rec_ttl = record.ttl(rec) if rec_ttl > 0 then record.set_ttl(rec, -1) aerospike:update(rec) end end
在AQL:
$aql Aerospike Query Client Version 3.12.0 C Client Version 4.1.4 Copyright 2012-2017 Aerospike. All rights reserved. aql> register module './ttl.lua' OK, 1 module added. aql> execute ttl.to_zero_ttl() on test.foo

