来源: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
制作网站视频东营市房管局官网运营网站需要多少钱汕头百姓网招聘无锡哪家做网站开发好联系在线客服哔哩哔哩高清免费观看服务平台官网入口报告厅淄博外贸网站建设赣州58同城招聘网最新招聘营销的作用东莞网站建设银行视频剪辑软件哪个好dedecmsv6自己制作小程序商城郑州最新新闻公众号怎么找人工客服制作人在线完整免费微信运营专员好做吗免费服务器网站推荐企业信息系统概念中小企业查询系统网络平面设计培训网站建设定制费用日常生活中好的设计产品电商网站设计公司联系亿企邦区块链dapp开发南京cms建站模板个人怎么制作微信小程序网络价格