Dynamodb 与 Redis

Posted

技术标签:

【中文标题】Dynamodb 与 Redis【英文标题】:Dynamodb vs Redis 【发布时间】:2019-11-14 03:44:30 【问题描述】:

我们正在使用 AWS,并考虑在我们的新服务中使用 DynamoDBRedis。 以下是我们服务的特点

    每分钟插入/删除的次数在数百到数千次之间,以后会更大。 我们不需要快速搜索,只需要用key找到一个值 数据不应丢失。 与1不同,还有另一个数据没有很多插入/删除。

我很担心Redis 服务器何时停机。 当Redis 失败时,我们的数据将被删除。

这就是我考虑选择Amazon DynamoDB的原因。 因为DynamoDB是NoSQL,所以Insert/Delete非常快(比Redis慢,但我们不需要那么快),并且永久存储数据。

但我不确定我的想法是否正确。

如果我想错了,或者没有想到另一个重要的点,我会很感激你们教我的。

谢谢。

【问题讨论】:

您考虑存储什么样的数据? 路径信息。所有行的架构都是相同的。每行之间不需要不同。 ***.com/questions/5400163/… 我认为这个答案与您正在寻找的答案非常相似。您可以为 redis 启用备份以将数据保存在磁盘上。 Redis Labs 的 Redis Cloud Pro 可能会为您提供具有高可用性和持久性的 Redis 解决方案,请参阅 redislabs.com/redis-enterprise/pro 【参考方案1】:

AWS ElastiCache 服务中有两种类型的 Redis 部署:

    独立 多可用区集群

通过独立安装,可以为 Redis 实例打开持久性,因此服务可以在重启后恢复数据。但在某些情况下,例如底层硬件降级,AWS 可以将 Redis 迁移到另一个实例并丢失持久性日志。

在多可用区集群安装中,无法启用持久性,只能进行复制。如果发生故障,将副本提升到主状态需要一段时间。另一种方法是直接在应用程序中使用主从端点,这很复杂。如果出现导致两个 Redis 节点同时重启的故障,也可能会丢失集群配置的所有数据。

因此,一般来说,Redis 不提供高持久性的数据,但提供了非常好的性能。

DynamoDB 是高度可用且持久的数据存储。在内部,它将数据复制到几个可用区,因此默认情况下它是高可用的。它也是完全托管的 AWS 服务,因此您无需关心集群、节点、监控...等,这是一种正确的云方式。

Dynamo DB 按 R/W 操作(按需或预留容量模型)和存储数据量收费。测试服务可能真的很便宜,但在重负载下要贵得多。您应该仔细分析您的工作量并计算总服务成本。

至于性能:DynamoDB 是一个 SSD 数据库,与 Redis 内存存储相比,但可以使用 DAX - DynamoDB 的内存缓存只读副本作为重负载的加速器。因此,您不会受到 DynamoDB 性能的严格限制。

这里是 DynamoDB 定价计算器的链接,这是服务使用中最复杂的部分之一:https://aws.amazon.com/dynamodb/pricing/

【讨论】:

DAX 不错,但它只支持 AWS SDK 1.x,不支持 AWS SDK 2.x, 早期版本的 Redis 缺乏持久性。 AWS MemoryDB 提供与 Redis 相同性能的持久性。 MemoryDB 更接近 DynamoDB 提供的功能。 AWS MemoryDb 构建在 Redis 引擎之上。 aws.amazon.com/memorydb

以上是关于Dynamodb 与 Redis的主要内容,如果未能解决你的问题,请参考以下文章

python--boto3 之 与dynamoDB 的基本交互,表的备份与恢复

DynamoDB / Scanamo:提供的关键元素与架构不匹配

Dynamodb 与 Redis

DynamoDB 简单 UpdateItem 抛出“提供的关键元素与架构不匹配”ValidationException

如何将 DynamoDB 细粒度访问控制与 Cognito 用户池结合使用?

DynamoDB 会话处理程序站点范围与 phpMyAdmin 一起使用