点 快速的未来正在您所在的城市举办的活动中到来。

加入我们参加 Redis 发布会

闪存有多快?

探索 Redis Enterprise 与闪存扩展的性能。

借助 Redis Enterprise,我们最近启用了将基于 RAM 的存储扩展到闪存的功能。请不要将此与持久化混淆 - 这是让 Redis 突破服务器 RAM 限制,并在需要时进入闪存存储的一种方式。随着闪存技术的进步(基于 NVMe 的 SSD 存储),性能变得非常可行,尽管速度不如仅使用 RAM 快。这允许您拥有混合存储 - 数据根据需要在快速 RAM 和闪存之间移动,所有这些都由 Redis Enterprise 管理,并且无需更改您的代码。

让我们看一下 Redis Enterprise 在闪存上的性能特征,以及如何自行测试性能。我们建议直接安装 Redis Enterprise 如我们的文档中所述。虽然我们提供有关如何使用 Docker 安装 Redis Enterprise 以测试产品的说明,但在这种情况下,该方法不会产生最高的性能。

为了最大程度地利用闪存功能,我们建议使用 i3.2xlarge AWS 实例。这些实例具有非易失性内存快闪 (NVMe) SSD 驱动器,这是高性能混合内存扩展的关键。测试设置如下

  • 2 x i3.2xlarge 用于提供数据
  • 1 x m4.large 作为仲裁节点
  • 1 x c4.8xlarge 作为负载生成器

负载生成由 memtier_benchmark提供。这应该与您的集群位于同一区域/区域/子网中,但应该在专用实例中。

对于此基准测试,我们将重点关注具有复制功能的集群。以下是一些有关我们测试设置的更多规格

内存限制100 GBRAM+闪存中存储的限制。
RAM 限制30%键和“热门值”始终存储在 RAM 中。
数据持久性为了简化设置并减少测试中的变量,持久性未启用。
集群/分片是 - 2 个分片每个节点上一个主分片和一个从分片。
复制是(已选中)复制在部署中很常见,因此包含在此基准测试中,尽管对于带有闪存的 Redis Enterprise 而言并非必需。


其他所有内容应使用默认设置。

填充数据集

我们将使用 memtier_benchmark 使用以下参数填充数据库

$ memtier_benchmark -s your-nodes-fully-qualified-name-or-ip-endpoint -p your-endpoint-port --hide-histogram --key-maximum=75000000 -n allkeys -d 500 --key-pattern=P:P --ratio=1:0

您需要更改红色中两个项目的 value。您可以在 Redis Enterprise 仪表板中找到端点地址和端口,方法是在数据库页面上选择您的数据库,然后单击配置选项卡;该表应该有一行与以下内容类似

此基准测试将使用 7500 万个键填充数据库,每个键都包含 500 字节的有效负载。

下一步是集中您的键 - 实际上,我们将加载中位数附近的键到 RAM 中,其余键存储在闪存中。此过程允许模拟更真实的访问模式,并控制基准测试的随机性(这不会反映真实的访问模式)。这也意味着后续测试将更加一致。您可以 阅读有关 memtier_benchmark 的之前博客文章中有关此功能的更多信息

为了集中,我们将通过运行以下命令生成大约 2050 万个 RAM 中的项目

$ memtier_benchmark -s your-nodes-fully-qualified-name-or-ip-endpoint -p your-endpoint-port --hide-histogram --key-minimum=27250000 --key-maximum=47750000 -n allkeys --key-pattern=P:P --ratio=0:1

现在我们已经准备好了数据库,让我们在准备好了数据库后生成一些负载。

$ memtier_benchmark -s your-nodes-fully-qualified-name-or-ip-endpoint -p your-endpoint-port  --pipeline=11 -c 20 -t 1 -d 500 --key-maximum=75000000 --key-pattern=G:G --key-stddev=5125000 --ratio=1:1 --distinct-client-seed --randomize --test-time=600 --run-count=1 --out-file=test.out

运行测试后,您将能够在 Redis Enterprise 仪表板中监控结果。在这种访问模式下,您应该看到大约 115,000 次操作/秒,延迟低于毫秒。同样重要的是要注意,如果您查看 memtier_benchmark 本身的输出,您可能会看到更低的值,但这将考虑网络延迟,因此它实际上并没有直接测量 Redis Enterprise。

此实验表明,您可以在仅运行四个分片的三个节点集群(两个服务节点)上实现超过 100,000 次操作/秒的平均吞吐量,延迟低于毫秒,这满足了许多现实世界数据库用例的性能要求。如果需要更多吞吐量或内存,您可以通过添加更多分片和节点来扩展集群。

如果您想构建此数据库的仅 RAM 版本,您需要三倍数量的节点。这反过来又会转化为运行数据库的三倍基础设施成本。使用 F lash 作为 RAM 扩展可以节省大量成本。

要开始使用 Redis Enterprise Flash,请访问快速设置说明 此处。要了解有关 Redis Flash 架构的更多信息,请参阅 Redis Enterprise Flash 架构博客文章。您可以开始 此处免费试用 Redis Enterprise Flash。最后,要了解有关 Redis Enterprise 与闪存扩展的性能特征的更多信息,请联系我们