Aerospike 特定于 setName 的配置

T.P*_*.P. 2 caching aerospike

我是 Aerospike 的新手。我的命名空间有多个集合。我试图在 aerospike dB 命名空间中为不同的集合设置不同的 TTL。

我不想使用分配给命名空间的默认 ttl,而是想为每个集合设置它。

我的配置

namespace test {
        replication-factor 1
        memory-size 1G
        default-ttl 0 
}
Run Code Online (Sandbox Code Playgroud)

我提到了此链接https://docs.aerospike.com/server/operations/configure,其中指出可以设置特定的记录策略。

namespace <name> {       # Define namespace record policies and storage engine
    storage {}           # Configure persistence or lack of persistence
    set {}               # (Optional) Set specific record policies
}
Run Code Online (Sandbox Code Playgroud)

但我不确定应该使用哪个字段来设置每组的 ttl。比如说,我在这个“测试”命名空间中有两个名为 - 的集合order,并且name我希望它们的 ttl 分别为 2 小时和 6 小时。任何帮助,将不胜感激。

提前致谢

pgu*_*pta 5

aeropsike 中的所有记录都属于一个名称空间,集合只是记录上的元数据,就像标签一样。如果客户端在创建或更新时未指定,default-ttl 是记录的剩余寿命。您不能通过在服务器配置中设置来分配default-ttl 。(还有一些其他设置的特定配置参数,例如已实现的disable-evictionenable-index , default-ttl不是其中之一。)但是您可以通过在客户端应用程序中编写它来实现相同的目的。

对于每个集合,您可以使用不同的写入策略,并在该写入策略中定义用于在该特定集合中创建或更新记录的 ttl。例如在Java客户端中,它被称为WritePolicy.expiration,以秒为单位。在您的具体情况下,您可以将 2 小时 default-ttl 作为服务器配置 - 因此订单将获得默认值,对于name,在客户端中,在名称集中创建或更新记录时,您可以使用 WritePolicy 将服务器默认值覆盖为 6 小时。到期时间 = 3600。

  • 这是正确的答案,也是最灵活的答案,只是想补充一点,如果您使用 Spring Data Aerospike,您可以在类/持久对象上使用 @Document 注释,并在设置级别指定过期/TTL。例如:`@Document(collection = “set-name”,expiration = 1,expirationUnit = TimeUnit.DAYS)`collection = 设置名称。过期 = 该集的 TTL。expirationUnit = TTL 配置的时间单位。 (2认同)