dot Redis 8 已发布,而且是开源的

了解更多

搜索性能基准测试:RediSearch vs. Elasticsearch

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

背景

RediSearch 是一个构建在 Redis 之上的分布式全文搜索和聚合引擎模块。它使用户能够以极快的速度在其 Redis 数据集上执行复杂的搜索查询。 RediSearch 采用 C 语言编写,其独特的架构从头开始基于优化的数据结构构建,使其成为市场上其他搜索引擎的真正替代品。它作为独立的搜索引擎,在索引和检索可搜索数据方面表现出色。

当我们首次推出 RediSearch 时,我们将其与 Elasticsearch 和 Solr 等流行的搜索引擎进行了基准测试,以测试引擎的强大程度。这次,我们决定尝试一种略有不同的基准测试,以便 (a) 为您提供一个清晰、可重现的设置,所有搜索引擎都经过优化以提供最佳性能,以及 (b) 根据我们从 RediSearch 用户那里看到的情况模拟多个真实场景。

基准测试

在此搜索基准测试中,我们比较了 RediSearch 和 Elasticsearch 在两种用例下的表现

  1. 索引和查询 Wikipedia 数据集
  2. 多租户环境中的快速索引

Wikipedia 基准测试

我们首先对 Wikipedia 的 560 万份文档(5.3GB)进行索引,然后对索引后的数据集执行双词搜索查询。

索引结果

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

查询结果

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

多租户索引基准测试

在这里,我们模拟了一个多租户电子商务应用,其中每个租户代表一个产品类别并维护自己的索引。在此基准测试中,我们构建了 5 万个索引(或产品),每个索引存储多达 500 份文档(或项目),总计 2500 万份文档。RediSearch 仅在 201 秒内构建了这些索引,平均速度为 12.5 万个索引/秒。然而,Elasticsearch 在创建 921 个索引后崩溃了,显然不是为应对此负载而设计的。

基准测试设置

硬件

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

数据集来源

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

RediSearch 配置

名称
分片数量
  • Wikipedia 基准测试: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 在以下用例下进行了基准测试

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

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

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

阅读更多关于 RediSearch 的信息此处以及其背后的技术。要开始使用 RediSearch – 请试用我们的Redis Cloud Pro此处或下载 Redis Enterprise Software此处

附录

根据读者的反馈,我们更新了对 wikipedia 数据集的引用,并添加了基准测试源代码的链接,以便重现结果。欢迎提供更多反馈意见。