来源:zhuanlan.zhihu.com/p/687400704
RediSearch是一个Redis模块,为Redis提供查询、二次索引和全文搜索。要使用RediSearch,首先要在Redis数据上声明索引。然后可以使用重新搜索查询语言来查询该数据。
RedSearch使用压缩的反向索引进行快速索引,占用内存少。RedSearch索引通过提供精确的短语匹配、模糊搜索和数字过滤等功能增强了
# 实现特性
基于文档的多个字段全文索引
高性能增量索引
文档排序(由用户在索引时手动提供)
在子查询之间使用 AND 或 NOT 操作符的复杂布尔查询
可选的查询子句
基于前缀的搜索
支持字段权重设置
自动完成建议(带有模糊前缀建议)
精确的短语搜索
在许多语言中基于词干分析的查询扩展
支持用于查询扩展和评分的自定义函数
将搜索限制到特定的文档字段
数字过滤器和范围
使用 Redis 自己的地理命令进行地理过滤
Unicode 支持(需要 UTF-8 字符集)
检索完整的文档内容或只是ID 的检索
支持文档删除和更新与索引垃圾收集
支持部分更新和条件文档更新
# 对比 Elasticsearch
如下图所示,RediSearch 构建索引的时间为 221 秒,而 Elasticsearch 为 349 秒,快了 58%。
# 索引构建测试
我们模拟了一个多租户电子商务应用程序,其中每个租户代表一个产品类别并维护自己的索引。对于此基准测试,我们构建了 50K 个索引(或产品),每个索引最多存储 500 个文档(或项目),总共 2500 万个文档。
RediSearch 仅用了 201 秒就构建了索引,平均每秒运行 125K 个索引。然而,Elasticsearch 在 921 个索引后崩溃了,显然它不是为应对这种负载而设计的。
# 查询性能测试
一旦数据集被索引,我们就使用在专用负载生成器服务器上运行的 32 个客户端启动两个单词的搜索查询。如下图所示,RediSearch 吞吐量达到了 12.5K 操作/秒,而 Elasticsearch 为 3.1K 操作/秒,速度提高了 4 倍。
此外,RediSearch 延迟稍好一些,平均为 8 毫秒,而 Elasticsearch 为 10 毫秒。
# 安装
安装目前分为源码和docker安装两种方式。
源码安装
git clone https://github.com/RediSearch/RediSearch.git
网站建设营销型广州网站优化牡丹江网络推广东莞网络推广公司苏州网站优化商业授权手机商城系统凡科网广州网站排名哈尔滨网站优化fanke.com浙江seo广州网站优化全球建站网站盈利模式南宁企业建站山东网站优化网页设计专业定制app开发沈阳网站优化seo外链发布平台深圳网站优化哪家好沧州网站优化石家庄整站优化傻瓜网站制作外贸网店系统广州网站优化企业建站系统无锡seo网站优化及推广公司河南做网站