🚀 RedisSearch 是什么?
RediSearch 是 Redis Labs 官方开发的一个模块,提供:
- 全文搜索
- 模糊匹配
- 前缀匹配
- 分词搜索(支持中文)
- 排序、聚合、分页
- 结构化字段过滤
- 实时索引更新
- FT.AGGREGATE、FT.SEARCH、FT.SUGGET 等高级查询能力
👉 简单来说,它让 Redis 从一个内存缓存工具,变成了一个高性能、轻量级搜索引擎。
✅ 为什么它是替代 ES 的有力选择?
对比项 | RedisSearch | Elasticsearch |
---|---|---|
启动速度 | 秒级 | 分钟级(冷启动慢) |
数据实时性 | 实时 | 默认刷新周期(1s~) |
写入延迟 | 极低(内存) | 较高(磁盘+事务) |
部署复杂度 | 极低 | 较高(需 JVM、调参等) |
运维成本 | 低(内存为主) | 高(资源占用大) |
小数据量搜索 | 更快 | 不占优势 |
模块化 | Redis 模块 | 独立服务 |
对于中小型项目、实时搜索需求、边缘计算场景,RedisSearch 通常性能更优且更轻量。
✍ 示例:使用 RedisSearch 代替模糊搜索
建索引
bash
FT.CREATE user_idx ON HASH PREFIX 1 user: SCHEMA name TEXT email TEXT age NUMERIC
添加数据
bash
HSET user:1 name "张三" email "zhangsan@example.com" age 30
模糊搜索
bash
FT.SEARCH user_idx "张*"
多字段复杂搜索
bash
FT.SEARCH user_idx "@name:张* @age:[20 40]"
📦 支持中文分词?
是的,RedisSearch 支持中文搜索:
- 默认使用 CJK 分词器(按双字节)
- 也可接入 jieba 或自定义分词(需预处理)
例如:
bash
FT.CREATE article_idx ON HASH PREFIX 1 article: SCHEMA title TEXT NOSTEM
使用 NOSTEM
可以保留中文原始形式。
💡 RedisSearch 的适合场景
- 中小型系统、轻量化部署(无需维护 ES 集群)
- 实时搜索(搜索数据实时写入)
- 高速缓存 + 搜索一体化
- 搜索提示(自动补全)
- 实时排行榜、筛选、聚合等需求
🚫 RedisSearch 不适合的场景
- 超大规模文本搜索(千万级文档以上)
- 复杂 NLP/语义搜索(需要 ML 或上下文理解)
- 强事务性/审计需求(Redis 非强持久化)
总结:换掉 ES?RedisSearch 是一种高效替代方案
如果你觉得 Elasticsearch 太重、写入慢、维护成本高,那么:
RedisSearch = 轻量 + 高性能 + 实时搜索 + 简单部署
是中小型搜索系统、微服务、边缘设备非常值得尝试的选择!