Posts
read more
Redis를 활용한 Spring Boot 캐싱 처리: 성능과 고가용성을 동시에 잡는 법
1. 서론: 왜 Redis 캐시를 사용해야 할까?
사용자가 늘어남에 따라 데이터베이스(DB) 서버는 병목 지점이 됩니다. 매번 동일한 데이터를 DB에서 가져오는 대신, 메모리 기반의 고성능 저장소인 Redis에 보관해두면 어떨까요?
Redis는 초당 수만 건의 읽기/쓰기를 처리할 수 있어, 잦은 조회 작업이 발생하는 API 성능 개선에 탁월합니다. 이번 포스팅에서는 실무 사례를 바탕으로 Redis 캐시 적용법을 살펴보겠습니다.
2. Spring Boot Redis 설정과 구현
먼저, Spring Boot에서 Redis 라이브러리를 추가하고 캐시 매니저를 설정해야 합니다.
Maven 의존성 추가 및 설정 예시
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
@Configuration
@EnableCaching
public class RedisCacheConfig {
@Bean
public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(10)) // 캐시 유효 시간: 10분
.serializeKeysWith(SerializationPair.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
return RedisCacheManager.builder(connectionFactory)
.cacheDefaults(config)
.build();
}
}
3. 실무 사례: 인기 상품 상세 페이지 캐싱
상황: 하루 수십만 명이 접속하는 커머스 사이트에서, 베스트셀러 상품 상세 정보를 조회하는 쿼리가 DB에 과부하를 주고 있습니다.