借助 Redis Enterprise,我们最近启用了将基于 RAM 的存储扩展到闪存的功能。请不要将此与持久化混淆 - 这是让 Redis 突破服务器 RAM 限制,并在需要时进入闪存存储的一种方式。随着闪存技术的进步(基于 NVMe 的 SSD 存储),性能变得非常可行,尽管速度不如仅使用 RAM 快。这允许您拥有混合存储 - 数据根据需要在快速 RAM 和闪存之间移动,所有这些都由 Redis Enterprise 管理,并且无需更改您的代码。
让我们看一下 Redis Enterprise 在闪存上的性能特征,以及如何自行测试性能。我们建议直接安装 Redis Enterprise 如我们的文档中所述。虽然我们提供有关如何使用 Docker 安装 Redis Enterprise 以测试产品的说明,但在这种情况下,该方法不会产生最高的性能。
为了最大程度地利用闪存功能,我们建议使用 i3.2xlarge AWS 实例。这些实例具有非易失性内存快闪 (NVMe) SSD 驱动器,这是高性能混合内存扩展的关键。测试设置如下
负载生成由 memtier_benchmark提供。这应该与您的集群位于同一区域/区域/子网中,但应该在专用实例中。
对于此基准测试,我们将重点关注具有复制功能的集群。以下是一些有关我们测试设置的更多规格
内存限制 | 100 GB | RAM+闪存中存储的限制。 |
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 与闪存扩展的性能特征的更多信息,请联系我们。