RedisConnectionFactory
는 Spring Data Redis에서 Redis와의 연결을 관리하는 인터페이스라고 하는데(마치 emf 처럼 느껴진다) 이 인터페이스는 Redis에 대한 모든 연결을 생성하고 관리하며, RedisTemplate 또는 다른 Redis 관련 컴포넌트들이 Redis 서버와 상호작용할 수 있도록 지원한다는 내용을 정리하고자 합니다.
RedisConnectionFactory
란?RedisConnectionFactory
는 Spring Data Redis에서 Redis 서버와의 연결을 생성하는 역할을 합니다. Spring 애플리케이션이 Redis 서버에 연결할 때, RedisConnectionFactory
를 통해 연결을 설정하고 관리합니다. 이 인터페이스는 여러 구현체를 가지고 있으며, 각 구현체는 특정한 유형의 Redis 서버나 연결 방식을 지원합니다.
LettuceConnectionFactory
:
RedisConnectionFactory
구현체입니다. Lettuce는 비동기, 동기 및 반응형 API를 지원하는 Redis 클라이언트입니다.JedisConnectionFactory
:
아래는 LettuceConnectionFactory
를 사용하여 Spring에서 Redis 연결을 설정하는 간단한 예제입니다.
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.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
return template;
}
}
LettuceConnectionFactory
나 JedisConnectionFactory
를 구성할 때, 다양한 옵션을 설정할 수 있습니다. 예를 들어:
@Bean
public RedisConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory factory = new LettuceConnectionFactory();
factory.setHostName("localhost");
factory.setPort(6379);
factory.setPassword("yourpassword");
factory.setDatabase(0);
return factory;
}
RedisConnectionFactory
가 중요한가?RedisConnectionFactory
는 Redis와의 연결 설정을 추상화하여, 애플리케이션 코드가 특정 클라이언트 라이브러리에 의존하지 않도록 합니다.RedisConnectionFactory
를 통해 설정된 Redis 연결은 Spring의 RedisTemplate
이나 StringRedisTemplate
과 같은 클래스에서 사용됩니다. 예를 들어, 데이터를 Redis에 저장하고 조회할 때, RedisTemplate
은 RedisConnectionFactory
에서 제공하는 연결을 사용하여 Redis 서버와 통신합니다.
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void saveData(String key, Object value) {
redisTemplate.opsForValue().set(key, value);
}
public Object getData(String key) {
return redisTemplate.opsForValue().get(key);
}
이 코드에서 RedisTemplate
은 내부적으로 RedisConnectionFactory
를 사용하여 Redis 서버에 데이터를 저장하고 조회합니다.
RedisConnectionFactory
는 Spring Data Redis에서 Redis 서버와의 연결을 관리하는 핵심적인 역할을 합니다. LettuceConnectionFactory
와 JedisConnectionFactory
와 같은 다양한 구현체를 통해 다양한 Redis 설정 및 배포 환경에 맞게 애플리케이션을 구성할 수 있습니다. 즉, Redis와의 통신을 보다 효율적이고 유연하게 관리할 수 있습니다.