我们现在就是Redis

了解更多

RedisTimeSeries版本1.2基准测试

查看我们如何对最新版本的RedisteTimeSeries进行基准测试,以确定它是在Redis中保存时间序列数据的最佳方式。



回到博客

以测试我们新发布的RedisTimeSeries1.2模块中,我们使用了时间序列基准测试套件(TSBS).TSBS是一个Go程序的集合,它基于由inflxdb和TimescaleDB公开的工作,旨在让开发人员生成数据集,然后对读写性能进行基准测试。万博最新版本下载苹果ag万博下载TSBS支持许多其他时间序列数据库,这使得比较数据库变得很简单。

有关RedisTimeSeries 1.2的更多信息,请参见RedisTimeSeries 1.2版在这里!

本文将深入探讨基准测试过程,但关键是要记住:RedisTimeSeries很快…真的很快!这使得RedisTimeSeries到目前为止是Redis中处理时间序列数据的最佳选择:

    1. 压缩不会降低性能如果碎片不受CPU限制。
    2. 当基数增加时,性能不会降低(请参见下面的note)。
    3. 在时间序列中添加更多的样本不会降低性能。
    4. 与1.0版本相比,RedisTimeSeries 1.2可以将查询延迟提高50%,吞吐量提高70%。查询越复杂,获得的性能就越大。

为了比较RedisTimeSeries 1.2和版本1.0.3,我们选择了三个数据集:前两个数据集每个时间序列的样本数量相同,但基数不同。

注:时间序列数据集的最大基数定义为数据集在任何给定时间点可以包含或引用的不同元素的最大数量。例如,如果智能城市有100个物联网(IoT)设备,每个设备报告10个指标(气温、二氧化碳水平等),分布在50个地理点上,则此数据集的最大基数为50000[100(deviceId)x 10(metricId)x 50(GeoLocationId)]。

我们选择这两个数据集对查询/摄取性能与基数进行基准测试。第三个数据集的基数与第一个数据集相同,但每个时间序列中的样本数是第一个数据集的三倍。该数据集用于基准测试摄取时间与时间序列中样本数之间的关系。

基准基础设施

性能基准在Amazon Web Services实例上运行,通过Redis的基准测试基础设施提供。基准测试客户端和数据库服务器都运行在单独的c5.24xlarge实例上。这些测试的数据库运行在一台安装了Redis Enterprise 5.4.10-22版本的机器上。万博体育彩数据库由10个主碎片组成。

除了这些主要的基准测试/性能分析场景外,我们还支持在网络、内存、CPU和I/O上运行基准测试,以了解底层网络和虚拟机的特性。我们将基准测试基础设施表示为代码,以便其稳定且易于复制。

摄入标准

下表比较了三个数据集的RedisTimeSeries版本1.0.3和新版本1.2之间的吞吐量。您可以看到两个版本之间的差异是最小的。但是,我们引入了压缩,这额外消耗了5%的CPU周期。由此,我们可以得出结论,如果碎片不受CPU限制,那么就存在压缩不会降低吞吐量

下面的三个图像跟踪第三个(也是最大的)数据集接收期间的吞吐量、延迟和内存消耗。我们在不到两个小时的时间内将8亿个样本插入单个数据库。这里重要的是当时间序列中有更多的样本时,延迟和吞吐量不会降低.图表的最后一行比较了前两个数据集的吞吐量。几乎没有区别,这告诉我们当基数增加时,性能不会降低。大多数其他时间序列数据库在基数增加时会降低性能,因为它们使用的是底层数据库和索引技术。

在摄取阶段监视吞吐量的Grafana仪表板的屏幕截图。
Grafana仪表板在摄入阶段监测延迟的屏幕截图。
Grafana仪表板监控Redis消耗内存的屏幕截图。

查询性能

TSBS包括一系列不同的读查询。下面的图表表示了RedisTimeSeries版本1.0.3和版本1.2之间多范围查询的查询速率和查询延迟的比较。它们表明查询延迟可以提高50%,吞吐量可提高70%,根据查询复杂度、用于计算响应的访问时间序列的数量和查询时间范围。通常,查询越复杂,性能增益越明显。

这种行为是由于压缩和对API的更改造成的。由于更少的内存空间容纳更多的数据,因此回答相同的查询需要更少的内存访问块。类似地,API默认行为(不返回每个时间序列的标签)的更改导致e上的负载和总体CPU时间大幅减少乙酰胆碱TS.MRANGE指挥部。

内存利用率

RedistemSeries 1.2中增加的压缩功能使比较这三个数据集中的内存利用率变得很有趣。结果是,在这个基准测试中,所有三个数据集的内存消耗都减少了94%。当然,这是一个实验室设置,在固定时间间隔内生成时间戳,这对于双增量压缩非常理想on(有关双增量压缩的更多信息,请参见RedisTimeSeries版本1.2在这里!)如前所述,在现实世界的用例中,90%的内存减少是很常见的。

RedisTimeSeries非常快

当我们去年夏天推出RedisTimeSeries时基准它与Redis中普通数据结构(如排序集、散列或流)的时间序列建模选项相比较。在内存消耗方面,它已经超过了除流之外的其他建模技术,流消耗了RedisTimeSeries一半的内存。随着Gorilla压缩的引入(更多信息请参阅本文:RedisTimeSeries版本1.2在这里!),到目前为止,RedisTimeSeries是Redis中保存时间序列数据的最好方法

除了证明压缩不会导致性能下降外,基准测试还表明,基数或时间序列中的样本数不会导致性能下降。所有这些特征的组合在时间序列数据库中是独一无二的。再加上大大提高的读取性能d你肯定想自己看看RedistemSeries。

最后,值得注意的是,时间序列基准系统是丰富的,并且由社区驱动的——我们很高兴成为其中的一员。在RedisTimeSeries 1.2中,拥有基准测试的共同基础已被证明对消除性能瓶颈和强化每个解决方案具有极大的价值。我们已经开始有助于更好地理解TSBS上的延迟和应用程序响应,并计划对当前基准进行进一步扩展。

Baidu