문자열 저장은 간편하지만 객체 저장 시 수동 변환 필요 시스템 클래스 객체를 직렬화 형태로 저장하는 RedisTemplate는 데이터 읽기 용이성 낮음 사용자 정의 객체를 Redis에 저장하려면 키 및 값 시리얼라이저 설정 필수
테스트 스크립트에서 사용 가능한 어노테이션: @BeforeAll: 모든 테스트 실행 전 호출되는 정적 메서드 @BeforeEach: 각 테스트 메서드 실행 전 호출되는 인스턴스 메서드
@SpringBootTest
public class RedisTest {
@Resource
private StringRedisTemplate stringRedisTpl;
@Resource
private RedisTemplate redisTpl;
@Resource
private CategoryService categorySvc;
@BeforeEach
public void setupSerializers() {
// 키 시리얼라이저 설정: 문자열로 변환 후 저장
redisTpl.setKeySerializer(new StringRedisSerializer());
// 값 시리얼라이저 설정: JSON 형식으로 변환 후 저장
redisTpl.setValueSerializer(new GenericJackson2JsonRedisSerializer());
}
@Test
void test1() {
List<Category> categories = categorySvc.findCategories();
redisTpl.opsForValue().set("categories", categories, 600, TimeUnit.SECONDS);
}
}
시리얼라이저 설정 방법:
첫 번째 방식:
@Configuration
public class RedisConfigV1 implements InitializingBean {
@Resource
private RedisTemplate redisTpl;
@Override
public void afterPropertiesSet() throws Exception {
redisTpl.setKeySerializer(new StringRedisSerializer());
redisTpl.setValueSerializer(new GenericJackson2JsonRedisSerializer());
}
}
두 번째 방식:
@Configuration
public class RedisConfigV2 {
@Bean
public RedisTemplate createRedisTemplate(LettuceConnectionFactory factory) {
RedisTemplate template = new RedisTemplate<>();
template.setConnectionFactory(factory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
세 번째 방식(가장 일반적):
@Configuration
public class RedisConfigV3 {
@Resource
private RedisTemplate redisTpl;
@PostConstruct
public void initSerializers() {
redisTpl.setKeySerializer(new StringRedisSerializer());
redisTpl.setValueSerializer(new GenericJackson2JsonRedisSerializer());
}
}