一、RediSearch是什么?
RediSearch 是 Redis 官方推出的高性能全文搜索引擎模块,首次发布于2017年,由 Redis Labs 团队开发。它直接集成在 Redis 中,无需额外部署服务,通过内存存储和高效索引算法实现毫秒级搜索响应,特别适合实时性要求高的场景。
二、核心功能:不止是搜索
1、 1.全文搜索;
2、 •支持关键词、模糊匹配(如"数据*"
匹配“数据库”)、布尔逻辑(AND/OR/NOT);
• 中文分词:需指定语言为chinese
,默认使用 Friso 分词器(需配置自定义词典优化效果)。
3、 2.复杂查询;
4、 •数值范围:@price:[100500]
查询价格区间;
• 地理位置:结合 Redis GEO 命令,实现附近的人、商家搜索。
• JSON文档搜索:需配合 RedisJSON 模块,支持 JSONPath 提取字段。
5、 3.智能扩展;
6、 •自动补全:输入“电”自动联想“电脑”“电影”;
• 同义词扩展:搜索“手机”可匹配“移动电话”。
7、 4.高性能特性;
8、 •内存存储,写入即索引(无延迟);
• 支持增量索引,无需全量重建。
三、适用Redis版本
- • 最低要求:Redis 4.0+(基础功能)。
- • 推荐版本:Redis 6.0+(支持JSON、集群等高级功能)。
- • 最新特性:
RediSearch 2.10+ 支持向量搜索(图片/文本相似度匹配)、空字段索引优化。
四、安装教程:3分钟搞定
方法1:Docker一键安装(推荐)
# 拉取镜像(含Redis+RediSearch)
docker run -p 6379:6379 redislabs/redisearch:latest
验证安装:
docker exec -it 容器名 redis-cli
127.0.0.1:6379>` MODULE LIST # 看到ft或search模块即成功
方法2:源码编译安装
# 安装依赖
git clone https://github.com/RediSearch/RediSearch.git
cd RediSearch && make
# 启动Redis并加载模块
redis-server --loadmodule ./src/redisearch.so
需确保系统已安装gcc
、cmake
等工具。
五、实战示例:电商商品搜索
1. 创建索引
FT.CREATE product_idx ON HASH PREFIX 1 \"product:\"
SCHEMA
title TEXT WEIGHT 5.0 # 标题权重更高
price NUMERIC SORTABLE # 支持按价格排序
description TEXT
location GEO # 地理位置字段
2. 添加商品数据
HSET product:1 title \"华为手机\" price 2999 description \"5G旗舰手机\" location \"116.40,39.90\"
HSET product:2 title \"苹果笔记本\" price 9999 description \"M1芯片超薄本\" location \"121.47,31.23\"
3. 执行搜索
# 搜索价格≤5000的“华为手机”
FT.SEARCH product_idx \"@title:华为 @price:[-inf 5000]\"
# 附近3公里的商品(需提前存地理坐标)
FT.SEARCH product_idx \"@location:[116.40 39.90 3 km]\"
中文搜索注意:需显式指定语言:
FT.SEARCH product_idx \"华手机\" LANGUAGE chinese
六、适用场景
- • 实时搜索:电商商品、社交动态秒级检索。
- • 缓存层加速:Redis缓存数据直接搜索,避免查数据库。
- • 轻量级分析:日志关键词过滤、用户行为统计。
- • 中小规模数据:百万级以内数据,内存成本可控。
七、注意事项
1、 1.分词优化:中文搜索建议集成jieba
分词器提升准确性;
2、 2.内存管理:数据量大时需监控内存使用,避免溢出;
3、 3.集群限制:开源版不支持分布式索引,企业级需求可选RedisCloud;
总结:RediSearch 是 Redis 生态中的“搜索利器”,适合快速搭建实时搜索服务。从安装到实战,只需几行命令即可体验!想了解更多高级功能(如向量搜索),可访问 RediSearch 官网:https://redis.io/docs/stack/search/