amazon-ec2 - Redis:Amazon EC2 与 Elasticache

标签 amazon-ec2 redis amazon-elasticache

我想自己托管一个 Redis 服务器。我将 EC2 与 Elasticache 进行了比较。 我想知道EC2的缺点是什么。

一个 EC2 微型实例的成本与 Elasticache 微型实例一样高,但内存要多 400 mb。为什么要使用 Elasticache 而不是在 ec2 tiny 实例上设置自己的 Redis 服务器?

最佳答案

tl;dr:Elasticache 强制您使用单个 redis 实例,这是次优的。

长版:

我意识到这是一篇旧帖子(撰写本文时已 2 年),但我认为重要的是要注意我在这里看不到的一点。

在 elasticache 上,您的 redis 部署由 Amazon 管理。这意味着你被他们选择运行你的 redis 所困。

Redis 使用单线程执行读/写。这确保了没有锁定的一致性。就性能而言,不管理锁和闩锁是一项重要 Assets 。然而,不幸的结果是 if your EC2 has more than 1 vCPU they will go unused .具有多个 vCPU 的所有 elasticache 实例都是这种情况。

默认的elasticache实例大小是cache.r3.large,它有两个核心。

Amazon's Elasticache setup menu with defaults populated.

事实上,具有多个 vCPU 的实例大小很多。这个问题有很多机会表现出来。

enter image description here

亚马逊似乎已经意识到了这个问题,但他们似乎有点不屑一顾。

enter image description here

使这与这个问题特别相关的部分是,在您的 EC2 上(因为您正在管理自己的部署)您能够实现 multi-tenancy .这意味着您有许多在不同端口上监听的 redis 进程实例。通过根据记录 key 的哈希值选择在应用程序中读取/写入哪个端口,您可以利用所有 vCPU。

作为旁注;与实例大小上的 memcached elasticache 部署相比,多核机器上的 redis elasticache 部署应始终表现不佳。对于 Multi-Tenancy ,redis 往往是赢家。

更新:

Amazon 现在为您的 redis 实例 CPU EngineCPUUtilization 提供单独的指标。您不再需要用伪劣的乘法来计算 CPU,但仍然没有实现 Multi-Tenancy 。

关于amazon-ec2 - Redis:Amazon EC2 与 Elasticache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175941/

相关文章:

azure - 是否可以防止两个进程写入同一个缓存项?

amazon-web-services - 从 VPC 内的 EC2 连接到 ElastiCache(VPC 外)实例

amazon-web-services - 将现有 AWS Lambda 和 API Gateway 导出到 Cloudformation 模板

node.js - 是否有适用于 node.js 的 AWS AMI?

amazon-ec2 - Jetty 启动失败 - 地址正在使用

redis - 使用 libcurl 根据关键字从 redis 数据结构中获取记录作为数据库。

c# - ServiceStack Redis在检索数据时是如何发挥作用的

amazon-web-services - 您如何处理Amazon Kinesis Record重复项?

amazon-web-services - AWS CloudFormation‎ 模板 : Subnet addresses validation

amazon-web-services - 哪个服务正在执行 ebextensions