Redisson客户端指定远程Redis地址却连接localhost问题求助
问题排查与解决方案
核心原因
RedissonAutoConfiguration在创建redissonConnectionFactory Bean时,可能优先采用了Spring Boot默认的Redis配置属性(默认指向localhost),而非你自定义的Redisson配置文件。
具体排查与解决步骤
检查Spring默认Redis配置
查看你的application.yml或application.properties,即使没显式设置spring.redis.host,Spring Boot也会默认使用localhost作为Redis地址。如果要保留Spring Redis自动配置,需显式设置:spring: redis: host: <my.ip.addr> port: 6379排除Spring Redis自动配置
如果不需要Spring自带的Redis连接相关Bean,可在启动类上排除自动配置类,避免冲突:@SpringBootApplication(exclude = {RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class}) public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }手动创建RedissonConnectionFactory
编写自定义配置类,基于你的Redisson Config生成连接工厂,确保完全使用自定义配置:@Configuration public class RedissonCustomConfig { @Bean public RedissonClient redissonClient() throws IOException { // 注意修正文件名拼写:redison→redisson,确保配置文件正确加载 Config config = Config.fromYAML(new File("/redisson-config.yml")); return Redisson.create(config); } @Bean public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redissonClient) { return new RedissonConnectionFactory(redissonClient); } }验证配置加载正确性
在初始化RedissonClient的代码中添加日志打印,确认配置是否正确加载了远程IP:Config config = Config.fromYAML("/redisson-config.yml"); System.out.println("Redisson configured address: " + config.getSingleServerConfig().getAddress());如果输出不是
redis://<my.ip.addr>:6379,说明配置文件路径或文件名有误(比如你代码中的redison-config.yml拼写错误),需修正后重新测试。
内容的提问来源于stack exchange,提问作者Vivek Sharma
相关产品推荐
相关产品推荐

