什么是Redis?
大多数来自网络服务背景的开发者可能都熟悉Redis。Redis本质上是一个开源键值存储系统,可用作缓存、消息代理和数据库。开发者选择Redis是因为它速度快、拥有庞大的客户端库生态系统,并且多年来一直被大型企业广泛部署。
除了Redis的传统用途外,Redis还提供了Redis Modules,这是一种通过新功能、命令和数据类型来扩展Redis的方式。示例模块包括RedisJSON、RedisTimeSeries、RedisBloom和RediSearch。
部署选项
有多种方式可以部署Redis。对于本地开发而言,最快的方法是使用Redis Stack docker容器,这也是我们将在此采用的方式。Redis Stack包含多个Redis模块,这些模块可以协同工作,构建一个快速的多模型数据存储和查询引擎。
对于生产环境用例,最简单的入门方式是使用Redis Cloud服务。Redis Cloud是一个全托管的Redis服务。您也可以通过Redis Enterprise在自有基础设施上部署Redis。Redis Enterprise是一个可在kubernetes、本地或云端部署的全托管Redis服务。
此外,每个主要云服务提供商(AWS Marketplace、Google Marketplace或Azure Marketplace)都在其应用市场中提供Redis Enterprise。
什么是RediSearch?
RediSearch是一个Redis模块,它为Redis提供查询、二级索引、全文搜索和向量搜索功能。要使用RediSearch,您需要先在Redis数据上声明索引。然后就可以使用RediSearch客户端查询这些数据。有关RediSearch功能集的更多信息,请参阅RediSearch文档。
功能
RediSearch 采用压缩的倒排索引实现快速索引且内存占用低。RediSearch 索引通过提供精确短语匹配、模糊搜索和数值过滤等诸多功能来增强 Redis。例如:
- 对Redis哈希中的多个字段进行全文索引
- 增量索引而不会造成性能损失
- 向量相似性搜索
- 文档排序(使用 tf-idf,可选择用户提供的权重)
- 字段权重
- 使用AND、OR和NOT运算符的复杂布尔查询
- 前缀匹配、模糊匹配和精确短语查询
- 支持双变音位语音匹配
- 自动补全建议(支持模糊前缀匹配)
- 基于词干提取的查询扩展支持多种语言(使用Snowball实现)
- 支持中文分词和查询(使用 Friso)
- 数值筛选器和范围
- 使用Redis地理空间索引进行地理空间搜索
- 强大的聚合引擎
- 支持所有utf-8编码的文本
- 检索完整文档、选定字段或仅文档ID
- 排序结果(例如,按创建日期)
- 通过RedisJSON支持JSON格式
Clients
鉴于Redis庞大的生态系统,很可能已有您所需语言的客户端库。您可以使用任何标准的Redis客户端库来执行RediSearch命令,但使用封装了RediSearch API的库最为便捷。以下是几个示例,您可以在此处找到更多客户端库。
| 项目 | 语言 | 许可证 | 作者 | 星标数 |
|---|---|---|---|---|
| jedis | Java | MIT | Redis | |
| redis-py | Python | MIT | Redis | |
| node-redis | Node.js | MIT | Redis | |
| nredisstack | .NET | MIT | Redis |
部署选项
有多种方式可以部署带有RediSearch的Redis。最简单的入门方法是使用Docker,但也有许多潜在的部署选项,例如
- Redis Cloud
- 云市场:AWS Marketplace、Google Marketplace或Azure Marketplace
- 本地部署: Redis Enterprise Software
- Kubernetes: Redis Enterprise Software on Kubernetes
- Docker (RediSearch)
- Docker (Redis Stack)
集群支持
RediSearch拥有分布式集群版本,可扩展到数百台服务器上的数十亿文档。目前,分布式RediSearch作为Redis Enterprise Cloud和Redis Enterprise Software的一部分提供。
更多信息请参阅Redis Enterprise上的RediSearch。
示例
- Product Search - 电商产品搜索(支持图片和文本)
- Product Recommendations with DocArray / Jina - 基于Redis和DocArray的内容产品推荐示例
- Redis VSS in RecSys - 3 个端到端的 Redis 和 NVIDIA Merlin 推荐系统架构。
- Azure OpenAI Embeddings Q&A - 在Azure上使用OpenAI和Redis构建的问答服务。
- ArXiv Paper Search - 基于语义搜索的arXiv学术论文检索
更多资源
如需了解更多关于如何使用Redis作为向量数据库的信息,请查阅以下资源:
- Redis Vector Similarity Docs - Redis官方文档中关于向量搜索的内容。
- Redis-py Search Docs - Redis-py客户端库的RediSearch文档。
- 向量相似性搜索:从基础到生产环境 - 关于向量相似性搜索(VSS)及Redis作为向量数据库的入门博客文章。
- AI驱动的文档搜索 - 博客文章涵盖AI驱动的文档搜索用例与架构。
- 向量数据库基准测试 - Jina AI 向量数据库基准测试,比较 Redis 与其他数据库的性能。