环境准备 🛠️
在深入之前,让我们先设置 Spring Boot 项目。您需要在pom.xml
中添加以下依赖项。我们将包含标准的 Redis starter 和 Spring AI starter 用于向量搜索示例。
application.properties
中配置 Redis 和 OpenAI 凭据:
1. 原生 JSON 文档支持 📄
Redis 8.0 最重要的变化之一是将 RedisJSON 模块集成到核心中。现在您可以存储、检索和对复杂的 JSON 文档执行原子部分更新,而无需获取整个对象。Redis 命令示例:管理汽车信息
让我们存储一辆汽车的信息,然后更新单个字段:Spring Boot 示例:缓存汽车信息
让我们想象有一个 Car 类,我们希望将其作为 JSON 对象缓存在 Redis 中。 Car POJO(使用 Lombok 简化):2. AI 革命:使用 Spring AI 进行向量相似性搜索 🧠
也许最具前瞻性的特性是新的向量集数据结构(目前处于测试阶段),巩固了 Redis 在 AI 生态系统中的地位。向量搜索允许您基于语义含义而不是精确关键词来查找数据,这是现代 AI 功能的支柱,如 RAG(检索增强生成)、推荐引擎和图像搜索。Redis 命令示例:存储和查询图像向量
想象您有图像的向量嵌入。您可以存储它们并找到最相似的图像。Spring Boot 示例:构建语义搜索服务
让我们构建一个服务,您可以存储文本文档并找到相似的文档。 VectorStore 配置: 首先,我们需要配置 VectorStore bean,Spring AI 将使用它与 Redis 交互。3. 开发者体验提升:新的原子哈希命令
HGETDEL
命令是一个完美的例子。它允许您从哈希中检索字段的值并在单个原子操作中删除该字段。这对于处理存储在 Redis 哈希中的队列任务非常理想。
Spring Boot 示例:简单任务处理器
4. Redis 查询引擎:超越键值查找
虽然 Redis 在基于键的查找方面表现出色,但现实世界的应用程序通常需要根据数据内容来查询数据。新的 Redis 查询引擎现在是核心功能,允许您在 Hash 和 JSON 数据上创建二级索引。 这意味着您可以执行复杂的多字段查询,而无需维护手动索引,使您的应用程序逻辑更简单、更强大。代码示例:索引和搜索汽车
假设您将汽车信息存储在哈希中。您可以创建索引以按品牌、价格、年份等条件查找汽车。5. 底层优化:新的 I/O 线程模型
对于高级用户,Redis 8.0 引入了改进的 I/O 线程实现。通过设置io-threads
配置参数(例如,io-threads 8
),您可以利用现代多核 CPU 实现吞吐量的大幅增加——在基准测试中每秒操作数增加高达 2 倍。这允许单个 Redis 实例处理更多要求苛刻的工作负载。