我陷入了一种情况,我已经将default-ttl的一个名字初始化为30天 . 有大约500万个数据(30天计算)的ttl值 . 实际上,我的要求是ttl应为零(0),但It(ttl-30d)保持不知情或无法识别 .
所以,现在我想用新的ttl值(零)更新prev(旧)500万数据 .
我已经检查/尝试了“set-disable-eviction true”,但它无法正常工作,它正在根据(旧)ttl-value删除数据 .
我怎么克服这个? (我想检索删除的数据,我该怎么办?) .
谁来帮帮我 .
1 回答
首先,eviction和到期是两种不同的机制 . 您可以通过各种方式禁用驱逐,例如set-disable-eviction config参数,您是一个很好的知识库FAQ What are Expiration, Eviction and Stop-Writes? . 不幸的是,如果他们的空闲时间是过去的话,已经清理的过期记录就会消失 . 如果这些记录仅被驱逐(即由于跨越命名空间high-water mark的内存或磁盘而在其无效时间之前被删除),您可以冷重启节点,那些带有未来TTL的记录将返回 . 如果他们是durably deleted或他们的TTL过去(这些记录被跳过),他们将不会返回 .
至于重置TTL,最简单的方法是通过使用扫描应用于命名空间中所有记录的record UDF来完成此操作 .
适用于您的情况的UDF非常简单:
ttl.lua
在AQL: