DyanomoDB是否会根据TTL立即删除项目,如何实现5分钟后从表中删除项目?

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

我的登录会话自上次活动后 5 分钟内有效。如果有任何活动,我会通过添加 5 分钟来更新项目中的生存时间属性,否则应在“expireAt”中设置的时间将其删除。但是为什么 dynamoDB 中的项目没有按照项目“expireAt”中设置的生存时间被删除?

在 Java Spring-Boot 中,我已按照文档中所述设置了 EPOCH 时间(以秒为单位)

               login.setExpireAt((System.currentTimeMillis() / 1000) + 300);
。 5 分钟后不会删除表中的项目。我可以采取什么替代方法来解决这个问题?

amazon-web-services spring-boot amazon-dynamodb ttl
1个回答
0
投票

但是为什么 dynamoDB 中的项目没有按照项目“expireAt”中设置的生存时间被删除

DynamoDB TTL 尽最大努力工作,因为它为您的表提供免费删除。如果您的项目已超过其到期时间,那么它最终有资格被删除,但这可能是在未来的几分钟/几小时/几天后。如果您需要更严格的删除,您有一些选择:

  1. 使用 EventBridge Scheduler 创建您自己的 TTL 驱逐
  2. 在读取上使用过滤表达式,过滤掉已经超过过期时间并且应该被驱逐的项目
  3. 创建您自己的 TTL 扫描器,定期从 DynamoDB 读取和删除项目。
© www.soinside.com 2019 - 2024. All rights reserved.