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

了解更多

memtier_benchmark 中的新功能:伪随机数据、高斯访问模式和范围操作

去年,我们开源了 memtier_benchmark,这是一款用于 Redis 和 Memcached 资源的高吞吐量基准测试工具。在 Redis,我们每天都使用这个工具,并且那些尝试过它的人向我们反馈了很好的意见。 基于这些建议,我们对该项目进行了一些改进,我想今天与您分享。

我们的基准测试工具的第一个新增功能是根据已知大小范围生成随机数据。这可以通过将新的 –data-size-pattern 开关设置为值“S”(顺序),并使用 –data-size-range switch 指定其范围来实现。 以下示例将产生一个基准测试键空间,其值均匀地分布在 4 到 204 字节的值之间

memtier-benchmark --random-data --data-size-range=4-204 --data-size-pattern=S --key-minimum=200 --key-maximum=400 <additional parameters>

在上面的示例中,我们使用了 -–random-data 开关来生成随机数据,并使用 –key-minimum–key-maximum 开关来控制键名 ID 的范围,从而产生总共 200 个键。 第一个键 memtier-200 将保存 4 个字节的数据,下一个键将有 5 个字节,依此类推,直到最后一个键 memtier-400,它将存储 204 个字节。

下一个新增功能是使用高斯(也称为正态)分布来访问数据的能力。 在进行此更改之前,您可以为基准测试的访问模式指定统一随机或顺序分布。 但是为了更好地模拟现实生活中的用例,这个新选项让您可以使 memtier_benchmark 键访问模式符合熟悉的高斯分布的钟形曲线。 使用时,您还可以控制和设置分布将遵循的标准偏差和中位数。 例如,使用以下参数调用该工具

memtier-benchmark --random-data --data-size-range=4-204 --data-size-pattern=S --key-minimum=200 --key-maximum=400 --key-pattern=G:G --key-stddev=10 --key-median=300 <additional parameters>

将导致大多数读取/写入访问集中在第 100 个 (memtier-300) 键上。

最后,我们添加了使用 SETRANGEGETRANGE Redis 命令来代替 SETGET 的能力。 这使您可以构建使用更少网络流量的基准测试,同时仍然使用更大的数据大小。 例如,您可以拥有 1MB 的键值,但仅使用以下参数读取和写入最后一个字节

memtier-benchmark --data-offset=1048575 --data-size=1 <additional parameters>

我希望您会发现这些新添加的功能很有用 – 如果您想分享您的 memtier_benchmark 输入或经验,请随时直接在项目的 GitHub 存储库中进行分享。