dot Redis 8 来了——而且它是开源的

了解更多

闪存有多快?

探索 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 个 i3.2xlarge 用于服务数据
  • 1 个 m4.large 作为仲裁节点
  • 1 个 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

您需要修改红色标记的两项的值。您可以在 Redis Enterprise 控制面板上找到端点地址和端口,方法是在“数据库”页面上选择您的数据库,然后点击“配置”选项卡;表格中应该有一行类似于此的内容

此基准测试将向数据库中填充 7500 万个键,每个键的载荷为 500 字节。

下一步是集中您的键——实际上,我们将把靠近中位数的键加载到 RAM 中,其余的则放在闪存中。这个过程可以模拟更真实的访问模式,并控制基准测试原本的随机性(这种随机性不会反映真实的访问模式)。这也意味着后续的测试将更加一致。您可以阅读我们在之前关于 memtier_benchmark 的博客文章中对此功能的更多介绍

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

$ 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 ops/sec 的吞吐量,延迟低于毫秒。同样重要的是要注意,如果您查看 memtier_benchmark 本身的输出,可能会看到较低的值,但这考虑了网络延迟,因此并非直接测量 Redis Enterprise 的性能。

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

如果您想构建一个纯 RAM 版本的数据库,您需要的节点数量将是三倍。这反过来意味着运行数据库的基础设施成本将是三倍。使用闪存作为 RAM 扩展提供了相当大的节省。

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