Spring Boot 앱이 Redis에 연결하지 못하고 다음과 같은 예외 발생:
RedisConnectionFailureException: Unable to connect to Redis
→ io.lettuce.core.RedisConnectionException: Unable to connect to localhost:<unresolved>:6379
| 시도 | 결과 | 비고 |
|---|---|---|
application.properties에 설정 추가 | ❌ 실패 | Docker 내에서 반영되지 않음 |
환경변수 (SPRING_REDIS_HOST) 지정 | ❌ 실패 | RedisProperties가 이를 매핑하지 않음 |
명령줄 인자 --spring.redis.host=redis 추가 | ❌ 실패 | RedisProperties는 system property도 반영되지 않음 |
docker exec로 Redis 직접 ping | ✅ 성공 | Redis 자체는 정상 작동 중 |
| Redis 컨테이너 health check | ✅ healthy | Redis 서버는 정상 상태 |
RedisProperties 대신 @Value로 설정 변경 | ✅ 성공 | 핵심 해결 방법! |
@Configuration
@Slf4j
public class RedisConfig {
@Value("${spring.redis.host}")
private String redisHost;
@Value("${spring.redis.port}")
private int redisPort;
@PostConstruct
public void logProps() {
log.info("🌐 Redis 연결정보 host={}, port={}", redisHost, redisPort);
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(redisHost, redisPort);
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(cf);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}
command: [
"java", "-jar", "app.jar",
"--spring.redis.host=redis",
"--spring.redis.port=6379"
]
environment:
- SPRING_REDIS_HOST=redis
- SPRING_REDIS_PORT=6379
애플리케이션 기동 성공
Redis 연결 정상
RedisTemplate을 통한 데이터 read/write 정상 작동
디버깅 환경(docker logs, exec)에서도 정상 반영됨