点击了解有关 RediSearch 的更多信息:RediSearch:作为 Redis 模块的高性能搜索引擎白皮书
RediSearch 是一款分布式全文搜索和聚合引擎,作为 Redis 之上的模块构建。它使用户能够以极快的速度对他们的 Redis 数据集执行复杂的搜索查询。 RediSearch 的独特架构(用 C 编写,并从头开始构建在优化的数据结构之上)使其成为市场上其他搜索引擎的真正替代方案。它非常适合作为独立搜索引擎用于索引和检索可搜索数据。
当我们首次发布 RediSearch 时,我们对它进行了基准测试,与 Elasticsearch 和 Solr 等流行搜索引擎进行比较,以测试该引擎的强大功能。这一次,我们决定尝试一个略有不同的基准测试,以便 (a) 为您提供一个清晰且可重现的设置,所有搜索引擎都经过优化以提供最佳性能,以及 (b) 模拟我们从 RediSearch 用户那里看到的多项真实场景。
在此搜索基准测试中,我们将 RediSearch 与 Elasticsearch 进行了比较,涵盖了两种用例
我们首先索引了来自维基百科的 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:一个用于负载生成器,另一个用于搜索引擎 | 36 | 60 | 10 千兆位 |
名称 | 描述和来源 | 文档数量 | 大小 |
---|---|---|---|
wikidump | 日期:2019 年 2 月 7 日 | 5.6M | 5.3 GB |
名称 | 值 |
---|---|
分片数量 |
|
文档表大小 | 10M |
名称 | 值 |
---|---|
分片数量 | 5 |
JVM 设置 (Xms 和 Xmx) | 25GB |
index.refresh_interval | -1 |
index.number_of_replicas | 0 |
Indices.queries.cache.size 和 index.queries.cache.enabled | 如 此处 所述 |
名称 | 值 |
---|---|
RediSearch | 版本 1.4.3 |
Elasticsearch | 版本 6.6.0,Lucene 版本为 7.6.0 |
RediSearch 基准测试 | 基准测试代码位于此处 |
我们对 RediSearch 和 Elasticsearch 进行了基准测试,涵盖了以下用例
Elasticsearch 是一款功能丰富的搜索产品,由 Elastic.co 的出色团队创建,但在性能方面,它存在着固有的架构缺陷,如下表总结所示
组件 | RediSearch | Elasticsearch |
---|---|---|
搜索引擎 | 基于现代优化数据结构的专用引擎 | 基于 Lucene 引擎 |
编程语言 | 基于 C,经过高度优化 | Java |
内存技术 | 在 DRAM 和持久内存上本地运行 | 基于磁盘,具有缓存选项 |
协议 | 优化的 RESP(Redis 序列化协议) | HTTP |
了解有关 RediSearch 的更多信息,请 点击此处,以及有关其背后的 技术。若要开始使用 RediSearch - 请尝试我们的 Redis Cloud Pro 点击此处,或下载 Redis Enterprise 软件 点击此处。
根据读者的反馈,我们更新了对维基百科数据集的引用,并添加了指向基准测试源代码的链接,以便于重现。如有任何反馈,我们很乐意收到。