AeroSpike 在我的记录中创建了 TTL

问题描述 投票:0回答:1

我很难从 AeroSpike 文档中理解以下内容:

http://www.aerospike.com/docs/client/python/usage/kvs/record-struct.html

记录还有两个与其关联的元数据值 - 记录生成(已修改的次数)及其 ttl。 ttl 可以设置为被视为过期之前剩余的秒数,或设置为 0(表示“永不过期”,默认值)。 ttl 已过期的记录将被服务器收集为垃圾。每次写入或触摸记录(使用 touch())时,其 ttl 都会重置。

我最初的想法是,如果命名空间策略默认 ttl 设置为 0,那么记录就不会过期。

我的 Aerospike 命名空间配置如下:

namespace brand {
        replication-factor 2
        memory-size 4G
        default-ttl 0 # 30 days, use 0 to never expire/evict.

        storage-engine memory

        # To use file storage backing, comment out the line above and use the
        # following lines instead.
        set twitter {
                set-disable-eviction true
        }

        storage-engine device {
                file /opt/aerospike/data/bar.dat
                filesize 16G
                data-in-memory true # Store data in memory in addition to file.
        }
}

我在数据库中进行了一些插入,然后当我检索数据时,我得到以下信息:

{ name: 'test',
  twitter: 'test',
  domain: 'test.com',
  description: 'Your First Round Fund' } { ttl: 4294967295, gen: 2 }

不知何故,记录上出现了 ttl,其他记录也有 ttl。我不希望我的记录从数据库中删除。如何从记录中删除 ttl,以及如何防止将来发生这种情况?

"asadm -e 'show stat like ttl'
显示以下内容:

~~~~brand Namespace Statistics~~~~
NODE                :   1            
cold-start-evict-ttl:   4294967295   
default-ttl         :   0            
max-ttl             :   0            

~~~~test Namespace Statistics~~~~~
NODE                :   1            
cold-start-evict-ttl:   4294967295   
default-ttl         :   2592000      
max-ttl             :   0            

asinfo -v 'hist-dump:ns=brand;hist=ttl'
显示以下内容

brand:ttl=100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
aerospike
1个回答
6
投票

node.js 获取操作元信息显示 { ttl: 4294967295, gen: 2 }。

好吧!因此,对于 TTL 无符号 32 位整数,您会看到 (2^32 -1) 的最大值,如果它是有符号 int,则为 -1。最大值在 Aerospike 中具有特殊含义,它意味着它无限期地存在。 Aerospike 已经接受 -1 作为无限期大约一年了,来自客户端的 0 意味着使用服务器默认值。

node.js 客户端基于我们的 c 客户端,已更改为将来自服务器的 ttl 0 值转换为 0xFFFFffff 或 -1。这在 c 客户端 3.0.51 发行说明中提到过

感谢您强调这个问题,看起来这个领域有一些过时的文档。

© www.soinside.com 2019 - 2024. All rights reserved.