Redis
Redis是什么?
大多数熟悉Web服务的开发者可能都听说过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是完全托管的Redis服务,可以部署在Kubernetes、本地或云中。
此外,所有主要的云提供商(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
客户端
鉴于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。
示例
- 产品搜索 - 电子商务产品搜索(包含图像和文本)
- 使用DocArray / Jina进行产品推荐 - 使用Redis和DocArray的内容产品推荐示例。
- RecSys中的Redis VSS - 3个端到端的Redis和NVIDIA Merlin推荐系统架构。
- Azure OpenAI Embeddings问答 - Azure上的OpenAI和Redis作为问答服务。
- ArXiv论文搜索 - 对arXiv学术论文进行语义搜索
更多资源
有关如何将Redis用作向量数据库的更多信息,请参阅以下资源:
- Redis向量相似性文档 - Redis官方的向量搜索文档。
- Redis-py搜索文档 - RediSearch的Redis-py客户端库文档。
- 向量相似性搜索:从基础到生产 - VSS和Redis作为VectorDB的入门博客文章。
- AI驱动的文档搜索 - 涵盖AI驱动的文档搜索用例和架构的博客文章。
- 向量数据库基准测试 - Jina AI的VectorDB基准测试,比较Redis与其他数据库。