amazon-web-services - Dynamodb 与 Redis
问题描述
我们正在使用 AWS,并考虑在我们的新服务上使用DynamoDB
或。
以下是我们服务的特点 Redis
- 插入/删除每分钟发生数百到数千次,以后会更大。
- 我们不需要快速搜索,只需要用key找到一个值
- 数据不应丢失。
- 还有另一个数据没有很多插入/删除,不像
1
.
我担心Redis
服务器何时关闭。
当Redis
失败时,我们的数据将被删除。
这就是我考虑选择的原因Amazon DynamoDB
。
因为DynamoDB
是 NoSQL,所以 Insert/Delete 非常快(比 Redis 慢,但我们不需要那么快),并且永久存储数据。
但我不确定我的想法是否正确。
如果我想错了或者不认为另一个重要的点,当你们教我时,我会很感激。
谢谢。
解决方案
AWS ElastiCache 服务中有两种类型的 Redis 部署:
- 独立
- 多可用区集群
通过独立安装,可以为 Redis 实例打开持久性,因此服务可以在重启后恢复数据。但在某些情况下,比如底层硬件降级,AWS 可以将 Redis 迁移到另一个实例并丢失持久性日志。
在多可用区集群安装中,无法启用持久性,只能进行复制。如果发生故障,将副本提升到主状态需要一段时间。另一种方法是直接在应用程序中使用主从端点,这很复杂。如果发生导致两个 Redis 节点同时重新启动的故障,也可能会丢失集群配置的所有数据。
因此,一般来说,Redis 不提供数据的高持久性,但提供了非常好的性能。
DynamoDB是您数据的高可用性和持久存储。在内部,它将数据复制到几个可用区,因此默认情况下它是高可用的。它也是完全托管的 AWS 服务,因此您无需关心集群、节点、监控......等,这是一种正确的云方式。
Dynamo DB 按 R/W 操作(按需或预留容量模型)和存储数据量收费。测试服务可能真的很便宜,但在重负载下要贵得多。您应该仔细分析您的工作量并计算总服务成本。
至于性能:与 Redis 内存存储相比,DynamoDB 是一个 SSD 数据库,但可以使用 DAX - DynamoDB 的内存缓存只读副本作为重负载的加速器。因此,您不会受到 DynamoDB 性能的严格限制。
这是 DynamoDB 定价计算器的链接,这是服务使用中最复杂的部分之一:https ://aws.amazon.com/dynamodb/pricing/
推荐阅读
- latex - Latex - 如何使系统方程加粗?(系统)
- reactjs - 找不到 webpack 模块:错误:无法解析类名
- list - List(...) 或 List{ForEach(...)} SwiftUI 中的正确方法?
- javascript - 在其他图像之上添加先前保存的画布 getImageData
- r - Shinyapp.io 读取本地文件,每 5 分钟更新一次其内容
- swift - 如何强制 Swift 识别撇号?
- jenkins - Jenkins Pipeline:遍历地图时如何使用 sh 模块?
- python - 抓取屏幕截图后pygame无法播放mp3
- ios - 为什么我的 UIDocumentPickerViewController 返回我无法访问的 url?
- c++ - 对静态字符串向量的未定义引用