본문 바로가기

Study Information Technology

Spring Boot와 Redis 연동 및 활용 방법

728x90
반응형

Spring Boot와 Redis: 연동 및 활용 방법

Overview

Spring Boot와 Redis를 통합하여 강력한 캐싱 및 데이터 저장 솔루션을 구축하는 방법에 대해 알아보겠습니다. Redis는 메모리 내 데이터 구조 저장소로, 데이터베이스, 캐시, 메시지 브로커 등 다양한 용도로 사용됩니다. Spring Boot는 개발자들이 자바 애플리케이션을 쉽게 구축하고 관리할 수 있도록 도와주는 프레임워크입니다. 이 두 기술을 통합하면 애플리케이션의 성능을 크게 향상시킬 수 있습니다.

이번 설명에서는 Redis의 기본 개념부터 시작하여 Spring Boot와의 연동 방법, 설정, 그리고 실제 활용 예제까지 자세히 다루겠습니다. 또한 에러 발생 시 해결 방법도 포함되어 있습니다.

Redis 개요

Redis는 빠르고, 가벼우며, 높은 성능을 제공하는 인메모리 데이터 저장소입니다. 주요 기능으로는 데이터 캐싱, 메시지 큐, 세션 저장, 실시간 분석 등이 있습니다. Redis는 다양한 데이터 구조를 지원하며, 대표적으로는 문자열, 리스트, 셋, 정렬된 셋, 해시 등이 있습니다.

Redis 설치 및 실행

Redis를 설치하고 실행하는 방법은 플랫폼에 따라 다릅니다. 대부분의 리눅스 배포판에서는 다음 명령어로 Redis를 설치할 수 있습니다:

sudo apt-get update
sudo apt-get install redis-server

설치 후, Redis를 시작하려면:

sudo systemctl start redis-server

Redis가 제대로 실행되고 있는지 확인하려면:

redis-cli ping

정상적으로 실행되고 있다면 PONG이라는 응답을 받을 수 있습니다.

Spring Boot와 Redis 연동

Spring Boot 애플리케이션에서 Redis를 사용하기 위해서는 spring-boot-starter-data-redis 의존성을 추가해야 합니다. 또한, Redis와의 연결을 위해 Redis 서버의 호스트와 포트를 설정해야 합니다.

1. 의존성 추가

pom.xml 파일에 다음과 같은 의존성을 추가합니다:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음을 추가합니다:

implementation 'org.springframework.boot:spring-boot-starter-data-redis'

2. 애플리케이션 설정

application.properties 또는 application.yml 파일에 Redis 서버의 호스트와 포트를 설정합니다:

application.properties:

spring.redis.host=localhost
spring.redis.port=6379

application.yml:

spring:
redis:
host: localhost
port: 6379

3. RedisTemplate 설정

Spring Boot에서 Redis를 사용하려면 RedisTemplate을 설정해야 합니다. 이를 통해 Redis 서버와 상호작용할 수 있습니다.

RedisConfig.java:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

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

이 설정에서는 Redis의 키와 값을 직렬화하는 방식을 정의합니다. StringRedisSerializer는 문자열 키를, GenericJackson2JsonRedisSerializer는 JSON 형식의 값을 직렬화합니다.

4. Redis 활용 예제

RedisTemplate을 사용하여 Redis에 데이터를 저장하고 조회하는 예제를 살펴보겠습니다.

RedisService.java:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.data.redis.core.RedisTemplate;

@Service
public class RedisService {

@Autowired
private RedisTemplate<String, Object> redisTemplate;

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

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

이 서비스 클래스는 saveData 메서드를 통해 Redis에 데이터를 저장하고, getData 메서드를 통해 데이터를 조회합니다.

RedisController.java:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RedisController {

@Autowired
private RedisService redisService;

@PostMapping("/save")
public String saveData(@RequestParam String key, @RequestBody Object value) {
redisService.saveData(key, value);
return "Data saved";
}

@GetMapping("/get")
public Object getData(@RequestParam String key) {
return redisService.getData(key);
}
}

이 컨트롤러는 HTTP 요청을 처리하여 Redis에 데이터를 저장하거나 조회합니다. POST /save 요청은 데이터를 저장하고, GET /get 요청은 데이터를 조회합니다.

5. 에러 처리

Redis와의 연결 중 오류가 발생할 수 있습니다. 가장 흔한 오류는 RedisConnectionFailureException입니다. 이 오류는 Redis 서버에 연결할 수 없을 때 발생합니다.

에러 메시지 예시:

org.springframework.data.redis.connection.RedisConnectionFailureException: Unable to connect to Redis

해결 방법:

  1. Redis 서버 확인: Redis 서버가 실행 중인지 확인합니다.
  2. 네트워크 설정: 애플리케이션과 Redis 서버가 같은 네트워크에 있는지 확인합니다.
  3. 설정 확인: application.properties 또는 application.yml 파일에 올바른 호스트와 포트가 설정되어 있는지 확인합니다.

참고문서

728x90
반응형