dot Redis 8 已发布——它是开源的

了解更多

AWS I3 实例借助 Redis Flash 性能提升 2.6 倍,成本降低 80%

最近,AWS 宣布在 15 个不同区域推出 I3 实例。我们很高兴参与其 I3 实例 Beta 测试计划,并在新实例正式发布前使用我们自己的 Redis Enterprise Flash (RedisFlash) 技术对其进行了广泛测试和基准测试。I3 SSD 存储基于 NVMe 技术,理论上应提供比上一代 I2 实例(基于 SATA SSD)更高的吞吐量和更低的延迟。

在我们深入探讨基准测试结果之前,我将首先快速介绍一下 Redis 和 RedisFlash 的背景知识。Redis 以其从内存中完全提供数据集的极快性能而闻名。然而,近年来内存价格一直持平,部署大型数据集可能昂贵,并且可能不适合所有商业模式和经济考量(更不用说高可用性需要一个或多个副本的情况了)。

RedisFlash 通过将 Redis 的键、字典(键背后的主要数据结构)和“热”值(访问最频繁的值)存储在内存中,同时将“冷”值(通过 LRU 算法标识的数据集中访问最少的部分)存储在 Flash(SSD 背后的技术)上,来解决这个问题。以这种方式分布数据可以保证正在进行的操作的执行速度几乎与完全在内存中运行的 Redis 一样快。

这种架构主要针对工作数据集小于总数据集的情况(这是最常见的场景),因为它允许 RedisFlash 在大幅降低服务器基础设施成本的同时保持与内存类似的性能。RedisFlash 与开源 Redis 完全兼容,并包含了 Redis 命令和功能的完整集合。Flash 被视为内存扩展器,并不取代 Redis 现有的数据持久化机制。考虑到所有这些,让我们看看我们在 AWS 上的最新性能测试。

我们测试了什么
我们比较了 RedisFlash 在三种 AWS 实例上的性能

  1. i2.8xlarge – 244GB 内存,8 个 SATA SSD 驱动器,总计 6.4TB,读/写 IOPS 分别为 365K/315K
  2. i3.8xlarge – 244GB 内存,4 个 NVMe SSD 驱动器,总计 7.6TB,读/写 IOPS 分别为 1.65M/150K
  3. i3.16xlarge – 488GB 内存,8 个 NVMe SSD 驱动器,总计 15.2TB,读/写 IOPS 分别为 3.3M/300K

测试参数

  • 我们使用了 100B 和 1000B 的值大小,涵盖了大多数标准 Redis 用例
  • 我们测试了 50% 和 85% 的内存命中率(即直接从内存中服务的请求数)
  • 我们对客户最常用的读/写比率进行了基准测试:1:1 和 4:1。所有测试都在单台服务器上进行
  • 在每种配置下,我们测试了在保持亚毫秒级服务器延迟(不包括网络)的情况下可以达到多少 ops/sec

我们的发现
下图显示了 100B 和 1000B 的测试结果

性能提升
下表总结了 i3 实例在所有测试中相对于 i2 实例的平均提升系数

  100B 1000B
i3.8xlarge 对比 i2.8xlarge 1.98 倍 1.66 倍
i3.16xlarge 对比 i2.8xlarge 2.59 倍 1.92 倍

以上结果表明,正如 Redis 的 RedisFlash 技术所展示的,新的 I3 实例确实比 I2 实例有所改进。

每次操作节省的成本
AWS I3 实例不仅比 AWS I2 实例快,而且便宜得多。例如,在美国东部(弗吉尼亚北部)区域,按需的 Linux i3.8xlarge 实例成本为 2.496 美元/小时,而 i2.8xlarge 为 6.820 美元/小时,便宜了 73%

当我们计算 i3.8xlarge 实例上每次 RoF 操作节省的成本时,我们发现以下情况

i3.8xlarge 每次 100B 操作节省的成本 i3.8xlarge 每次 1000B 操作节省的成本
81.47%
(或每次操作便宜 5.4 倍)
77.88%
(或每次操作便宜 4.5 倍)

注意:我们只比较了 i3.8xlarge 和 i2.8xlarge 实例,因为两者的内存和 SSD 容量相似。

总结
正如预期的那样,我们发现 RedisFlash 在 AWS I3 实例上的运行速度比在 AWS I2 实例上快 2.6 倍。我们还发现,由于 I3 实例的成本相对有吸引力,RedisFlash 在 I3 实例上的每次操作成本比在 I2 实例上便宜 5.4 倍

附录

基准测试设置

  • Redise Pack RedisFlash 版本:v. 4.5.0
  • RedisFlash 数据库:20 分片
  • 客户端机器:EC2 C4.8xlarge
  • AMI:ami-f4cc1de2 (xenial)
  • 负载生成工具:memtier benchmark
  • memtier 命令行示例
    memtier_benchmark -s 172.31.9.63 -p 12345 –pipeline=20 -c 10 -t 15 -d 100 –key-maximum=42949673 –key-pattern=G:G –key-stddev=1197484 –ratio=1:1 –distinct-client-seed –randomize –test-time=600 –run-count=1 –hide-histogram

AWS I3 和 I2 实例配置

详细定价可在 AWS 网站上找到。