Aerospike设置特定字段的失效日期

ffvjumwh  于 2022-10-31  发布在  Redis
关注(0)|答案(2)|浏览(219)

我有一个Aerospike缓存由一系列的数据与json值一样的结构。
示例值:{"name": "John", "count": 10}
我在徘徊,如果有可能只为计数字段设置过期时间,并在一段时间后重置它。

jhdbpxl9

jhdbpxl91#

Aerospike不支持这种功能。你必须编写代码(因此我猜你的另一篇文章是:您可以添加过滤器,使其仅基于记录的元数据(记录的最后更新时间,可通过表达式访问)或任何其他逻辑来执行此操作,然后让后台操作查询来执行此工作,这应该是超级高效和性能的。

bttbmeg0

bttbmeg02#

另一种方法是在bin数据中添加您自己的自定义到期时间戳,如下所示:{"name":"John", "count":10, "validTill":1672563600000000000} .
在这里,我使用如下格式(您可以使用不同的未来时间戳格式):

$ date --date="2023-01-01 09:00:00" +%s%N
1672563600000000000

现在,当你读取记录时,读一个表达式,如果你当前的时钟落后于 validTill,则返回 count = 10,否则返回0。如果你只关心读取时的 count 值,这是可行的。同样,当你在未来的写操作中更新计数值时,你可以使用相同的表达式逻辑来更新 countvalidTill
如果这对您有效,您就不必使用后台作业扫描和更新记录。

相关问题