dot 快速未来的技术即将在您的城市举办的活动中亮相。

加入我们,参加 Redis 发布活动

搜索基准测试:RediSearch 与 Elasticsearch

点击了解有关 RediSearch 的更多信息:RediSearch:作为 Redis 模块的高性能搜索引擎白皮书

背景

RediSearch 是一款分布式全文搜索和聚合引擎,作为 Redis 之上的模块构建。它使用户能够以极快的速度对他们的 Redis 数据集执行复杂的搜索查询。 RediSearch 的独特架构(用 C 编写,并从头开始构建在优化的数据结构之上)使其成为市场上其他搜索引擎的真正替代方案。它非常适合作为独立搜索引擎用于索引和检索可搜索数据。

当我们首次发布 RediSearch 时,我们对它进行了基准测试,与 Elasticsearch 和 Solr 等流行搜索引擎进行比较,以测试该引擎的强大功能。这一次,我们决定尝试一个略有不同的基准测试,以便 (a) 为您提供一个清晰且可重现的设置,所有搜索引擎都经过优化以提供最佳性能,以及 (b) 模拟我们从 RediSearch 用户那里看到的多项真实场景。

基准测试

在此搜索基准测试中,我们将 RediSearch 与 Elasticsearch 进行了比较,涵盖了两种用例

  1. 索引和查询维基百科数据集
  2. 在多租户环境中快速索引

维基百科基准测试

我们首先索引了来自维基百科的 560 万个文档(5.3GB),然后对索引数据集执行了双词搜索查询。

索引结果

如下图所示,RediSearch 在 221 秒内构建了索引,而 Elasticsearch 则需要 349 秒,快了 58%。

查询结果

数据集索引完成后,我们使用 32 个客户端(运行在专用负载生成器服务器上)启动了双词搜索查询。如下图所示,RediSearch 的吞吐量达到 12.5K 次操作/秒,而 Elasticsearch 的吞吐量为 3.1K 次操作/秒,快了 4 倍。此外,RediSearch 的延迟略好,平均为 8 毫秒,而 Elasticsearch 为 10 毫秒。

多租户索引基准测试

在这里,我们模拟了一个多租户电子商务应用程序,其中每个租户代表一个产品类别并维护自己的索引。对于此基准测试,我们构建了 50K 个索引(或产品),每个索引存储最多 500 个文档(或商品),总共 2500 万个文档。RediSearch 在短短 201 秒内构建了索引,同时平均运行 125K 个索引/秒。但是,Elasticsearch 在构建了 921 个索引后崩溃,显然无法应对这种负载。

基准测试设置

硬件

云实例类型vCPU内存 (GiB)网络
一个 AWS c4.8xlarge:一个用于负载生成器,另一个用于搜索引擎366010 千兆位

数据集来源

名称描述和来源文档数量大小
wikidump日期:2019 年 2 月 7 日5.6M5.3 GB

RediSearch 配置

名称
分片数量
  • 维基百科基准测试为 5
  • 多租户基准测试为 20
文档表大小10M

Elasticsearch 配置

名称
分片数量5
JVM 设置 (Xms 和 Xmx)25GB
index.refresh_interval-1
index.number_of_replicas0
Indices.queries.cache.size 和 index.queries.cache.enabled此处 所述

版本

名称
RediSearch版本 1.4.3
Elasticsearch版本 6.6.0,Lucene 版本为 7.6.0
RediSearch 基准测试基准测试代码位于此处

结论

我们对 RediSearch 和 Elasticsearch 进行了基准测试,涵盖了以下用例

  • 简单的维基百科用例 - 我们发现 RediSearch 在索引方面快了 58%,在对索引数据集执行双词搜索时快了 4 倍。
  • 更高级的多租户用例 - RediSearch 在短短 201 秒内创建了 50K 个索引,而 Elasticsearch 在创建了 921 个索引后崩溃。

Elasticsearch 是一款功能丰富的搜索产品,由 Elastic.co 的出色团队创建,但在性能方面,它存在着固有的架构缺陷,如下表总结所示

组件RediSearchElasticsearch
搜索引擎基于现代优化数据结构的专用引擎基于 Lucene 引擎
编程语言基于 C,经过高度优化Java
内存技术在 DRAM 和持久内存上本地运行基于磁盘,具有缓存选项
协议优化的 RESP(Redis 序列化协议)HTTP

了解有关 RediSearch 的更多信息,请 点击此处,以及有关其背后的 技术。若要开始使用 RediSearch - 请尝试我们的 Redis Cloud Pro 点击此处,或下载 Redis Enterprise 软件 点击此处

附录

根据读者的反馈,我们更新了对维基百科数据集的引用,并添加了指向基准测试源代码的链接,以便于重现。如有任何反馈,我们很乐意收到。