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와의 통신을 보다 효율적이고 유연하게 관리할 수 있습니다.