Infrastructure, Spring

Spring Boot에서 Redis 연동하기

spring boot redis integration

안녕하세요! Devloo입니다. 🙂 Spring Boot로 웹 개발을 진행하시면서 캐싱, 세션 관리, 실시간 분석 기능이 필요했던 경험이 있으신가요? 이러한 문제를 해결할 수 있는 강력한 솔루션으로 Redis를 들어보셨을 것입니다. 이번 글에서는 Redis와 Spring Boot를 연동하여 애플리케이션의 성능을 극대화하는 방법에 대해 다루어 보겠습니다.

Spring Boot에서 Redis 연동하기
Spring Boot에서 Redis 연동하기

Redis는 빠른 속도와 다재다능함으로 잘 알려진 오픈 소스 인메모리 데이터 저장소입니다. 캐싱, 세션 관리, 실시간 분석 등 다양한 용도로 널리 사용되고 있습니다. Spring Boot의 유연성과 결합하면 고성능 애플리케이션을 쉽게 구축할 수 있습니다. Spring Boot와 Redis를 연동하는 방법을 단계적으로 알아보겠습니다. 이 글을 통해 여러분이 보다 효율적이고 강력한 애플리케이션을 개발할 수 있기를 바랍니다.

(혹시, Redis에 대한 자세한 설명이 필요하시면 해당 링크를 클릭해주세요)

이제 시작해 볼까요 🙂 ?

사전 준비

시작하기 전에 다음 도구와 종속성이 설치되어 있는지 확인하세요:

  • Java Development Kit (JDK)
  • Apache Maven
  • Spring Boot
  • Redis 서버 (로컬에 설치하거나 Redis Labs와 같은 클라우드 기반 솔루션을 사용할 수 있습니다)

1단계: Spring Boot 프로젝트 생성

Spring Initializr를 사용하거나 선호하는 IDE를 사용하여 Spring Boot 프로젝트를 생성할 수 있습니다. 프로젝트에 Spring Web과 Spring Data Redis 종속성을 포함해야 합니다.

Spring Initializr를 사용하는 경우 다음 종속성을 선택하세요:

  • Web -> Spring Web
  • SQL -> Spring Data Redis

2단계: Redis 연결 구성

Spring Boot 프로젝트에서 Redis 서버와의 연결을 구성해야 합니다. application.properties 또는 application.yml 파일을 열고 다음 속성을 추가하세요:

# Redis 서버 구성
spring.redis.host=127.0.0.1     # Redis 서버 호스트 (기본값: localhost)
spring.redis.port=6379          # Redis 서버 포트 (기본값: 6379)

이 속성은 Redis 서버 설정에 따라 맞춤 설정할 수 있습니다.

3단계: Redis 구성 빈(Configuration Bean) 생성

다음으로, Redis 연결을 사용자 정의하기 위해 Redis 구성 빈(Configuration Bean)을 생성해야 합니다. 구성 내용을 포함하는 Java 클래스를 만들고 @Configuration으로 주석을 달아줍니다:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;

@Configuration
public class RedisConfig {
    @Bean
    JedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory jedisConFactory = new JedisConnectionFactory();
        jedisConFactory.setHostName("localhost");
        jedisConFactory.setPort(6379);
        return jedisConFactory;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(jedisConnectionFactory());
        return template;
    }
}

이 코드는 JedisConnectionFactoryRedisTemplate을 설정하여 Redis와 상호 작용할 수 있도록 합니다.

4단계: Spring Boot 애플리케이션에서 Redis 사용

이제 Redis 구성이 완료되었으므로 애플리케이션에서 Redis를 사용할 수 있습니다. 다음은 몇 가지 일반적인 사용 사례입니다:

캐싱

애플리케이션에서 캐싱을 활성화하려면 @EnableCaching 주석을 사용하고, 캐시해야 하는 메서드에 @Cacheable, @CachePut, @CacheEvict 주석을 달 수 있습니다. 예를 들어:

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class MyService {
    @Cacheable("myCache")
    public String getData() {
        // 시간을 소모하는 데이터 검색 로직
    }
}
RedisTemplate 사용

RedisTemplate을 사용하여 Redis와 상호 작용할 수 있습니다. 예를 들어, 데이터를 Redis에 저장하려면:

@Autowired
private RedisTemplate<String, Object> redisTemplate;

public void saveData(String key, Object data) {
    redisTemplate.opsForValue().set(key, data);
}

Redis에서 데이터를 검색하려면:

public Object getData(String key) {
    return redisTemplate.opsForValue().get(key);
}

5단계: Redis 연동 테스트

Redis 기능이 정상적으로 잘 작동하는지 아래와 같이 테스트를 진행하실 수 있습니다. @DataRedisTest 주석을 사용하여 Redis 관련 코드를 테스트할 수 있는 임베디드 Redis 서버가 포함된 테스트 환경을 만들 수 있습니다.

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.data.redis.core.RedisTemplate;

@RunWith(SpringRunner.class)
@DataRedisTest
public class RedisIntegrationTest {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Test
    public void testRedisOperations() {
        // Redis 관련 테스트 케이스 작성
    }
}

결론

Spring Boot 애플리케이션에 Redis를 통합하면 특히 캐싱과 세션 관리 측면에서 상당한 성능 향상을 얻을 수 있습니다. 위의 단계를 따르면 Redis를 쉽게 설정하고, 연결을 구성하며, Spring Boot 프로젝트에서 바로 사용할 수 있습니다. 트래픽 부하가 많거나, 실시간 데이터 처리 애플리케이션을 구축하는 경우, Redis는 여러분의 기술 스택에 매우 중요한 역할을 할 것 같습니다.

이번 시간에는 Spring Boot와 Redis를 연동하는 방법에 대해 알아보았습니다.

혹시 궁금하신 사항이 있으시면, 댓글 달아주세요 !!
끝까지 읽어주셔서 정말 감사합니다. (_ _) !!

Written by 개발자서동우
안녕하세요! 저는 기술 분야에서 활동 중인 개발자 서동우입니다. 명품 플랫폼 (주)트렌비의 창업 멤버이자 CTO로 활동했으며, AI 기술회사 (주)헤드리스의 공동 창업자이자 CTO로서 역할을 수행했습니다. 다양한 스타트업에서 일하며 회사의 성장과 더불어 비즈니스 상황에 맞는 기술 선택, 개발팀 구성 및 문화 정착에 깊은 경험을 쌓았습니다. 개발 관련 고민은 언제든지 편하게 연락주세요 :) https://linktr.ee/dannyseo Profile

Leave a Reply

Your email address will not be published. Required fields are marked *