Spring AI Alibaba Redis集群 记忆模块配置踩坑记录

引子

官方文档写的是 spring.ai.memory.redis.*,但我配了之后 IDE 报黄……

最近在做 AI 对话历史持久化,想用 Redis 存聊天记忆。Spring AI Alibaba 提供了 spring-ai-alibaba-starter-memory-redis 模块,看起来很美。

结果看官方文档(GitHub main 分支)配了一通,IDE 里全是黄色警告——后来才发现,官方文档是最新版 API,而我用的 1.0.0.2 版本还没支持这些配置项。

如果你也遇到了同样的问题,下面分享我摸索出的方案。


一、想用 Redis 存 AI 聊天记忆?pom.xml 加这些

<!-- Spring Data Redis(连接基础) -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- Spring AI Alibaba Redis 记忆模块 -->
<dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-memory-redis</artifactId>
</dependency>

<!-- Jedis 客户端(也可以用 Lettuce) -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

二、配置:

📖 官方文档写法(适用于最新版,低版本可能不生效)

spring:
  ai:
    memory:
      redis:
        mode: cluster
        client-type: jedis
        cluster:
          nodes: ...

这是 GitHub main 分支上的写法,如果你的版本较新可以直接用。但我用的是 1.0.0.2,IDE 报 modeclient-type 属性不存在——版本没跟上文档。

✅ 低版本实际能用的(集群模式)

spring:
  data:
    redis:
      password: ${REDIS_PASSWORD}
      cluster:
        nodes:
          - your-redis-ip:7001
          - your-redis-ip:7002
          - your-redis-ip:7003
          - your-redis-ip:7004
          - your-redis-ip:7005
          - your-redis-ip:7006

✅ 低版本实际能用的(单机模式——培训班常用)

spring:
  data:
    redis:
      host: localhost
      port: 6379
      password: 你的密码

核心规律:Spring Data Redis 会根据配置自动判断模式——配了 host:port 就是单机,配了 cluster.nodes 就是集群。 不需要额外声明。

💡 补充:为什么有两种写法?

官方 GitHub 文档写的是 spring.ai.memory.redis.mode: cluster,但这是最新版 main 分支的 API1.0.0.2 版本还没实现这个配置解析,所以 IDE 报属性不存在。

等到以后升级了版本,可以切回官方写法:

spring:
  ai:
    memory:
      redis:
        mode: cluster            # 官方新版写法
        client-type: jedis
        cluster:
          nodes: ...

spring.data.redis.cluster.nodes 是 Spring Data Redis 的底层配置,所有版本通用。两个都能连集群,只是配置层级不同——一个走 AI 模块专用通道,一个走 Spring 底层通道。 当前建议用后者,兼容性最好。


三、Java 代码里怎么用

import com.alibaba.cloud.ai.memory.redis.RedisChatMemoryRepository;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.memory.MessageWindowChatMemory;

@Bean(name = "deepseekChatClient")
public ChatClient deepseekChatClient(ChatModel deepseekModel,
                                     RedisChatMemoryRepository redisChatMemoryRepository) {
    // 创建滑动窗口记忆(最近 200 条)
    var windowChatMemory = MessageWindowChatMemory
            .builder().maxMessages(200)
            .chatMemoryRepository(redisChatMemoryRepository)
            .build();
    
    return ChatClient.builder(deepseekModel)
            .defaultAdvisors(MessageChatMemoryAdvisor.builder(windowChatMemory).build())
            .defaultOptions(ChatOptions.builder().model("deepseek-v4-pro").build())
            .build();
}

注意参数类型: 完整 import 路径如下:

import com.alibaba.cloud.ai.memory.redis.RedisChatMemoryRepository;

Jedis 6.x 构造器陷阱: 密码不能直接放中间参数,用 (nodes, null, password) 形式:

// Jedis 6.x 正确写法
JedisCluster jedisCluster = new JedisCluster(nodes, null, password);
//                          (节点集合, 用户名, 密码) — 没配ACL用户名为null

很多旧教程是 new JedisCluster(nodes, 5000, 5000, 3, password, poolConfig),那是 Jedis 3.x/4.x 的 API,Jedis 6.x 上不存在这个构造器,编译直接报错。


四、验证是否成功

启动项目后,问 AI 一句 “你好”,再问 “我刚才说了什么?”

如果 AI 回答 “你说了你好”,那就成功了。并且重启项目后依然能记起来——因为数据已经存在 Redis 里了。

可以用 Redis CLI 验证数据:

# 登录 Redis
redis-cli -a 你的密码

# 查看 AI 记忆的 key
keys chat:memory:*

# 查看某次对话的内容
hgetall chat:memory:你的会话ID

测试成功!

测试成功


五、总结

表现 解决
官方文档写了 spring.ai.memory.redis.client-type IDE 报黄,属性不存在 确认模块版本是否支持;或用 spring.data.redis.* 代替
import 用了 BaseRedisChatMemoryRepository IDEA 找不到类 改成 RedisChatMemoryRepository
忘了加 spring-boot-starter-data-redis Redis 连不上 加上这个依赖
集群用了 host:port 只连了一个节点 换成 cluster.nodes 列表

一句话:spring-ai-alibaba-starter-memory-redis 只管"把对话存到 Redis"的逻辑,不管"怎么连 Redis"。连接配置交给 spring.data.redis.* 就好。


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐