点 疾风未来的脚步声正渐渐临近你所在城市的某场活动。

加入我们,参加 Redis 发布会

借助 Redis Flash,AWS I3 实例快 2.6 倍,且便宜 80%

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

在我介绍基准测试结果之前,我将首先介绍 Redis 和 RedisFlash 的一些快速背景信息。Redis 因其从 RAM 中完全提供数据集的极快性能而闻名。然而,近年来 RAM 价格一直持平,部署大型数据集可能会很昂贵,并且可能不适合所有商业模式和经济(更不用说需要一个或多个副本以实现高可用性的情况)。

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

此架构主要设计用于工作数据集小于总数据集的情况(这是最常见的情况),因为它允许 RedisFlash 保持与 RAM 类似的性能,同时显著降低服务器基础设施成本。RedisFlash 与开源 Redis 完全兼容,并包含整个 Redis 命令和功能集。闪存被视为 RAM 扩展器,并不替代 Redis 的现有数据持久性机制。考虑到所有这些,让我们来了解我们在 AWS 上进行的最新性能测试。

我们进行了基准测试
我们在三个 AWS 实例上比较了 RedisFlash 的性能。

  1. i2.8xlarge – 244GB RAM,8xSATA SSD 驱动器和总共 6.4TB,具有 365K/315K 读/写 IOPS
  2. i3.8xlarge – 244GB RAM,4xNVMe SSD 驱动器和总共 7.6TB,具有1.65M/150K 读/写 IOPS
  3. i3.16xlarge – 488GB RAM,8xNVMe SSD 驱动器和总共 15.2TB,具有 3.3M/300K 读/写 IOPS

测试参数

  • 我们使用了 100B 和 1000B 的值大小,涵盖了大多数标准的 Redis 用例
  • 我们测试了 50% 和 85% 的 RAM 命中率(例如,一些请求直接从 RAM 中提供服务)
  • 我们对客户最常用的读/写比例进行了基准测试:1:1 和 4:1。所有测试都在一台服务器上进行
  • 在每个配置中,我们在保持服务器的毫秒级延迟(不包括网络)的前提下测试了每秒可实现的操作数。

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

性能改进
下表总结了所有测试中 i3 实例相比 i2 实例的平均改进因子

  100B 1000B
i3.8xlarge 与 i2.8xlarge x1.98 x1.66
i3.16xlarge 与 i2.8xlarge x2.59 x1.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%
(或每个操作便宜 x5.4 倍)
77.88%
(或每个操作便宜 x4.5 倍)

注意:我们仅比较了 i3.8xlarge 和 i2.8xlarge 实例,因为这两个实例具有相似的 RAM 和 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 网站上找到详细的价格。