본문 바로가기
개발/Spring

[Spring Boot] spring-data-redis 간단하게 적용해보기

by 상용최 2020. 7. 24.
반응형

개발환경

  • window
  • spring boot 2.3.1
  • spring data redis 2.3.1
  • commons-pool2 2.8.0 (org.apache)
  • lettuce-core 5.3.1 (io.lettuce)
  • gradle

Spring Boot환경에서는 Redis를 적용하기 매우 쉽습니다.

 

아래의 의존성이 필요합니다.

의존성을 추가한후 Gradle reimport를 해줍니다.

 

아래와같이 Config파일을 설정해줍니다.

@Configuration
@EnableRedisRepositories
public class RedisConfig {

    private RedisConnectionFactory redisConnectionFactory;

    @Autowired
    public RedisConfig(RedisConnectionFactory redisConnectionFactory) {
        LettuceConnectionFactory lettuceConnectionFactory = (LettuceConnectionFactory)redisConnectionFactory;
        this.redisConnectionFactory = lettuceConnectionFactory;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate(){
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
}

 

끝입니다. 정말쉽죠 ?

진짜 제대로 되는지 테스트코드를 통해 검증해보겠습니다.

@SpringBootTest
class RedisConfigTest {
    @Autowired
    RedisTemplate<String, Object> redisTemplate;

    public void setup() {
        for (int i = 0; i < 10; i++) {
            redisTemplate.opsForList().rightPush(""+i, String.valueOf(i));
        }
    }

    @Test
    @DisplayName("레디스 테스트")
    public void redisTest () throws Exception{
        // given
        setup();
        //then
        for (int i = 0; i < 10; i++) {
            System.out.println("get value "+i+": "+ redisTemplate.opsForList().leftPop(""+i));
        }

    }

}

위와같은 테스트코드 작성후 실행시켜보면 아래와 같이 통과하는것을 볼 수 있습니다.

 

 

 

Spring Boot 환경에서 Redis를 사용하는일은 정말 쉽습니다.

다만 잘 사용하기가 어려운것 같습니다.

Spring 환경에서 대표적으로 lettuce, jedis 가 있습니다.

두개의 장단점이 있지만 일반적으로 lettuce를 사용하는것으로 알고있습니다.

각자의 환경에 맞게 잘 알아보고 사용하는것이 중요할 것 같습니다.

반응형

댓글