我正试图从redis迁移到dynamoDB,并且一切都工作得很好!我唯一还没想到的是密钥过期。目前,我的数据设置有一个主键,没有范围键,因此:
{
"key" => string,
"value" => ["string", "string"],
"timestamp" => seconds since epoch
}
我在想的是在数据库上扫描时间戳小于特定值的位置,然后明确删除它们。然而,这看起来非常低效,并且会无缘无故地耗尽一些荒谬的读/写单元!最重要的是,只有在我运行扫描时才会发生这种情况,因此它们可以构建起来。
那么,有没有人找到解决这个问题的好方法呢?
答案 0 :(得分:7)
我也像使用Redis一样使用DynamoDB。
我的建议是将密钥写入不同的时间表。
例如,假设一种记录应该持续几分钟,最多不到一小时,那么你可以
这更易于维护且具有成本效益。
答案 1 :(得分:5)
您可以执行延迟过期并根据请求将其删除。
例如:
几年前,当我查看源代码时,这就是memcached所做的事情。
您仍然需要扫描以删除所有旧条目。
您还可以考虑使用Elasticache,它用于缓存而不是永久数据存储。
答案 2 :(得分:2)
似乎亚马逊刚刚为DynamoDB添加了过期支持(截至2017年2月27日)。看看官方博客文章:
https://aws.amazon.com/blogs/aws/new-manage-dynamodb-items-using-time-to-live-ttl/
答案 3 :(得分:1)
您可以使用时间戳作为索引的范围键,并允许根据时间更轻松地进行操作。