Spring-AI如何通过RedisAutoConfiguration连接Redis VectorStore?认证异常求助
问题解决:Redis VectorStore 认证失败异常处理
问题描述
根据Spring AI相关更新,需改用RedisAutoConfiguration替代RedisVectorStoreAutoConfiguration连接Redis VectorStore,但配置Redis连接信息后,持续抛出redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required异常。已确认host、port、password配置正确,且更换Spring AI版本(从1.0.0-M1到1.0.0-SNAPSHOT)后问题仍存在。
当前Redis配置
spring: ai: openai: api-key: ${OPENAI_API_KEY} data: redis: host: ${REDIS_HOST} port: ${REDIS_PORT} password: ${REDIS_PASSWORD} profiles: include: SECRET-KEYS
异常信息
redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required at redis.clients.jedis.Protocol.processError(Protocol.java:105) ~[jedis-5.0.2.jar:na] at redis.clients.jedis.Protocol.process(Protocol.java:162) ~[jedis-5.0.2.jar:na] at redis.clients.jedis.Protocol.read(Protocol.java:221) ~[jedis-5.0.2.jar:na] ...
可能的解决方案
1. 补充Spring AI专属Redis配置
使用RedisAutoConfiguration时,Redis VectorStore可能优先读取spring.ai.vectorstore.redis前缀的配置,而非通用的spring.data.redis。需添加专属配置确保认证信息被正确加载:
spring: ai: openai: api-key: ${OPENAI_API_KEY} vectorstore: redis: host: ${REDIS_HOST} port: ${REDIS_PORT} password: ${REDIS_PASSWORD} data: redis: host: ${REDIS_HOST} port: ${REDIS_PORT} password: ${REDIS_PASSWORD} profiles: include: SECRET-KEYS
2. 手动配置Redis连接工厂
若项目存在自定义RedisConnectionFactory Bean,需手动注入认证信息避免配置绑定失效:
@Configuration public class RedisConfig { @Value("${REDIS_HOST}") private String host; @Value("${REDIS_PORT}") private int port; @Value("${REDIS_PASSWORD}") private String password; @Bean public JedisConnectionFactory jedisConnectionFactory() { RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(host, port); config.setPassword(RedisPassword.of(password)); return new JedisConnectionFactory(config); } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template; } }
3. 验证Redis服务器认证配置
用redis-cli直接连接Redis服务器,确认密码有效性:
redis-cli -h <REDIS_HOST> -p <REDIS_PORT> auth <REDIS_PASSWORD>
若auth命令执行失败,需核对Redis服务器的requirepass配置是否与应用密码一致。
4. 排查配置文件加载问题
检查SECRET-KEYS配置文件是否正常加载,启动日志中搜索REDIS_PASSWORD字段,确认变量值是否符合预期。
内容的提问来源于stack exchange,提问作者이진성
相关产品推荐
相关产品推荐

