// 직접 연결 + 직렬화 미설정
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
return template;
}
// 파라미터 연결 + 직렬화 설정
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(connectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
ConnectionFactory 직접 연결 vs Parameter로 연결
- 직접 연결
- LettuceConnectionFactory를 직접 생성
-> 장점 : 명확한 Connection Factory 생성
-> 단점 : 유연성 부족
- LettuceConnectionFactory를 직접 생성
- Parameter 연결
- 다른 Bean으로 등록된 RedisConnectionFactory를 사용
-> 장점 : 유연성, 확장성 및 재사용성
-> 단점 : 초기 설정의 복잡성 증가
- 다른 Bean으로 등록된 RedisConnectionFactory를 사용
Serializer
- 미설정
- JdkSerializationRedisSerializer를 사용 -> 데이터가 직렬화된 바이너리 형태로 저장
- 사람이 데이터를 직접 확인하거나 디버깅할 때 어려움
- 지정설정
Serializer 장점 단점 추천 & 사용 시점 JdkSerializationRedis
Serializer모든 Java 객체 지원.
단순하고 범용적임.데이터가 사람이 읽기 어려움
클래스 변경 시 호환성 문제 발생.기본 직렬화 or
간단한 데이터 저장.StringRedis
Serializer읽기 쉽고 간단한
문자열 데이터 저장에 적합.객체를 저장할 수 없음. 문자열 데이터
(Key-Value 캐싱).Jackson2JsonRedis
Serializer사람이 읽기 쉬운 JSON 형식.
다양한 언어와 시스템에서 호환성 높음.클래스 변경 시 역직렬화 문제 발생 가능. 객체 데이터를
JSON으로 저장.GenericJackson2JsonRedis
Serializer타입 정보 포함으로
역직렬화가 더 유연.JSON 크기가 다소 커질 수 있음. 다형성 객체 저장 및
JSON 형식 필요 시.Kryo
Serializer고성능, 메모리 효율성 높음. 추가 라이브러리 필요, 설정이 복잡할 수 있음. 고성능이 필요한 대규모 객체 데이터 처리.
'Project' 카테고리의 다른 글
JPA ) 더티체킹의 대한 궁금증 & 나의 사용방식 (1) | 2024.12.22 |
---|---|
Redis ) Keyspace Notifications에 대한 궁금증 및 내가 사용했던 방법 (0) | 2024.12.19 |