Backend Development/Database

[Redis] RedisConnectionFactory란?

foreverWon 2025. 11. 16. 21:58
목차

    정의

    Redis 서버와 통신하기 위한 RedisConnection 객체를 생성하는 역할

    역할

    • RedisConnection 생성:
      • RedisConnectionFactory는 실제로 Redis 서버와 통신하는 데 필요한 RedisConnection 객체를 생성함
    • 예외 변환:
      • Redis 클라이언트 라이브러리에서 발생하는 예외를 Spring의 PersistenceExceptionTranslator계층으로 자동 변환하여 애플리케이션의 일관된 예외 처리를 도움
    • 커넥션 설정:
      • 애플리케이션에서 사용하는 특정 Redis 커넥터(예: Lettuce)를 설정하고, 이를 통해 RedisConnection 객체를 생성하도록 관리
    • DI(Dependency Injection)를 위한 설정:
      • RedisConnectionFactory를 사용하여 생성된 RedisConnection 객체를 다른 클래스에서 주입받아 사용할 수 있도록 설정

    Redis Config 예시

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
    import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
    import org.springframework.data.redis.core.StringRedisTemplate;
    
    @Configuration
    public class RedisConfig {
    
        @Bean
        public RedisConnectionFactory redisConnectionFactory(
                @Value("${spring.data.redis.host}") String host,
                @Value("${spring.data.redis.port}") int port,
                @Value("${spring.data.redis.password:}") String password
        ) {
            RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
            config.setHostName(host);
            config.setPort(port);
            if (!password.isBlank()) {
                config.setPassword(password);
            }
    
            return new LettuceConnectionFactory(config);
        }
    
        @Bean
        public StringRedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
            return new StringRedisTemplate(redisConnectionFactory);
        }
    }
    728x90

    'Backend Development > Database' 카테고리의 다른 글

    트랜잭션 격리 (Transaction Isolation)  (0) 2026.04.11
    [Redis] Redis ZSet  (0) 2025.11.22
    [PostgreSQL] TIMESTAMP와 TIMESTAMPTZ의 차이  (1) 2025.07.21
    데이터베이스 설계  (0) 2025.07.17