Python 如何使用Boto使dynamoDB中的密钥过期?
我正试着从redis搬到dynamoDB,现在一切都很好!我唯一还没有弄清楚的是密钥过期。目前,我的数据设置只有一个主键,没有范围键,因此:Python 如何使用Boto使dynamoDB中的密钥过期?,python,key-value,boto,amazon-dynamodb,Python,Key Value,Boto,Amazon Dynamodb,我正试着从redis搬到dynamoDB,现在一切都很好!我唯一还没有弄清楚的是密钥过期。目前,我的数据设置只有一个主键,没有范围键,因此: { "key" => string, "value" => ["string", "string"], "timestamp" => seconds since epoch } 我的想法是扫描数据库中时间戳小于特定值的位置,然后显式删除它们。然而,这看起来效率极低,并且会无缘无故地消耗大量的读/写单元!最重要的是,只有在我运
{
"key" => string,
"value" => ["string", "string"],
"timestamp" => seconds since epoch
}
我的想法是扫描数据库中时间戳小于特定值的位置,然后显式删除它们。然而,这看起来效率极低,并且会无缘无故地消耗大量的读/写单元!最重要的是,只有在我运行扫描时才会发生过期,所以可以想象它们会累积
那么,有人找到了解决这个问题的好方法吗?您可以使用时间戳作为范围键,它将被索引,并允许基于时间进行更简单的操作。您可以执行延迟过期,并根据请求将其删除 例如:
- 属性为“expiration”的存储密钥“a”将在10分钟后过期李>
- 9分钟后取回,检查过期时间,然后归还李>
- 11分钟后到。检查有效期。因为它比现在小,所以删除条目
您也可以考虑使用弹性键,它是用于缓存而不是永久数据存储的。
< P>我也使用DyDoDB,就像我们使用ReiS.</P>的方式一样。 我的建议是将密钥写入不同的时间切片表中 例如,假设一种类型的记录应该持续几分钟,最多不超过一小时,那么您就可以了这更易于维护且成本效益高 亚马逊似乎刚刚向DynamoDB添加了过期支持(截至2017年2月27日)。请看官方博客:
实际上没有任何基于时间的操作。。。只是数据过了一段时间就过时了,我还不如把它处理掉。使用时间戳作为范围字段也没有真正的帮助,因为任何键都可能过时,所以我们必须恢复到
扫描
!是的,我不认为有自动过期功能,你正在寻找,所以你所做的任何事情都必须作为一个批处理工作。最简单的方法是按日期对表进行分区,或者根据需要进行清理。