스프링 데이터 리디스 시작하기
스프링 데이터 리디스 시작하기 (Spring Data Redis — Getting Started)
스프링 애플리케이션에 Redis를 끼워 넣는 방법은 여러 가지가 있는데, 가장 표준적인 방법이 바로 Spring Data Redis예요. 스프링의 추상화 위에서 Redis를 쓰게 해주는 모듈인데, 연결 전략을 스프링 빈으로 깔끔하게 관리할 수 있다는 점이 매력이죠. 시작하는 방법을 함께 볼게요.
출처: 공식문서
Spring Data Redis는 무엇인가요?
Spring Data Redis는 Redis를 스프링 프레임워크와 통합해 주는 모듈이에요. 덕분에 최소한의 노력으로 스프링 애플리케이션에 Redis를 붙일 수 있습니다. 내부적으로는 Lettuce와 Jedis 클라이언트와 함께 동작해서, 두 클라이언트가 가진 연결 기능뿐 아니라 스프링 자체의 추상화 장점까지 함께 누릴 수 있어요.
이 섹션에 있는 페이지들은 Spring Data Redis로 Redis를 쓰는 레시피를 담고 있어요:
- Use Redis with the Spring cache abstraction — 스프링의 캐시 추상화 저장소로 Redis를 쓰는 방법
- Client-side geographic failover — Redis 엔드포인트 사이를 자동으로 페일오버하는 탄력적인 연결 설정 방법
시작하기에 앞서
가장 먼저 실행 중인 Redis 서버가 필요해요. 로컬에 Redis Open Source를 설치하거나, Redis 문서의 Spring Data Redis 시작 방법 외에도 스프링 부트 스타터(start.spring.io)로 프로젝트를 생성하는 방식이 흔히 쓰여요.
Spring Data Redis는 Redis 2.6 이상을 요구하고, Lettuce와 Jedis라는 두 가지 널리 쓰이는 자바 Redis 라이브러리와 통합됩니다.
RedisTemplate으로 연결하고 사용하기
스프링 데이터 리디스의 핵심은 RedisTemplate이라고 보면 돼요. 연결 팩토리(RedisConnectionFactory)를 만들고, 그걸로 RedisTemplate을 구성한 뒤 값을 저장·조회하면 됩니다.
단순한 자바 애플리케이션으로 값을 저장하고 읽는 예시를 볼게요.
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
public class RedisApplication {
private static final Log LOG = LogFactory.getLog(RedisApplication.class);
public static void main(String[] args) {
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory();
connectionFactory.afterPropertiesSet();
RedisTemplate<String, String> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
template.setDefaultSerializer(StringRedisSerializer.UTF_8);
template.afterPropertiesSet();
template.opsForValue().set("foo", "bar");
LOG.info("Value at foo:" + template.opsForValue().get("foo"));
connectionFactory.destroy();
}
}
이 간단한 예시에서도 기억할 점이 몇 가지 있어요.
RedisTemplate(리액티브 사용 시ReactiveRedisTemplate)은RedisConnectionFactory와 함께 생성해요. 연결 팩토리는 지원되는 드라이버 위에 놓인 추상화 계층이에요.- Redis를 쓰는 방법은 하나로 고정되어 있지 않아요. 일반 키("문자열"), 리스트, 셋, 정렬된 셋, 스트림, 해시 등 다양한 데이터 구조를 지원하거든요.
실제 스프링 프로젝트에서는 보통 @Configuration 클래스에서 LettuceConnectionFactory나 JedisConnectionFactory를 빈으로 등록해 사용합니다.
@Configuration
class RedisStandaloneConfiguration {
/** Lettuce */
@Bean
public RedisConnectionFactory lettuceConnectionFactory() {
return new LettuceConnectionFactory(new RedisStandaloneConfiguration("server", 6379));
}
/** Jedis */
@Bean
public RedisConnectionFactory jedisConnectionFactory() {
return new JedisConnectionFactory(new RedisStandaloneConfiguration("server", 6379));
}
}
더 알아보기 (Learn more)
연결이 끝나면 스프링 캐시 추상화에 Redis를 붙이는 레시피나, 장애에도 끊기지 않는 클라이언트 측 지리적 페일오버 설정을 이어서 살펴보세요. Spring Data Redis의 공식 레퍼런스(docs.spring.io)에서도 연결 모드(스탠드얼론, 레플리카, Sentinel, 클러스터)별 상세 설정을 다룹니다.