RedisTemplate의 키와 값 시리얼라이저 구성

문자열 저장은 간편하지만 객체 저장 시 수동 변환 필요 시스템 클래스 객체를 직렬화 형태로 저장하는 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());
    }
}

태그: RedisTemplate JSON 시리얼라이저 Spring Boot 객체 직렬화 키값 설정

7월 11일 21:25에 게시됨