[Redis] springboot에서 redis 사용하기

남순식·2026년 3월 18일

1. 프로젝트 설정 및 연결

가장 먼저 spring-boot-starter-data-redis 의존성을 추가해야 한다.
설정 파일은 application.yaml을 사용하며, Redis 서버의 접속 정보를 입력한다.

spring:
  data:
    redis:
      host: localhost
      port: 6379

별도의 설정을 하지 않으면 기본적으로 localhost:6379로 연결을 시도함.


2. Spring Data Redis Repository 사용하기

JPA에 익숙하다면 가장 빠르게 적응할 수 있는 방식임. Java 객체를 Redis의 Hash 구조로 저장한다.

도메인 모델 설정
@RedisHash 어노테이션을 통해 Redis에 저장될 키의 접두사를 지정한다.

@RedisHash("item")
public class Item implements Serializable {
    @Id
    private Long id;
    private String name;
    private Integer price;
}

Repository 인터페이스
CrudRepository를 상속받는 것만으로 save(), findById(), deleteById() 등의 메서드를 즉시 사용할 수 있다.

  • 동작 원리: 데이터를 저장하면 Redis에 item:{id} 형태의 Hash 키와, 전체 ID 목록을 관리하는 item이라는 Set 키가 생성됨.

  • 장점: 사용법이 직관적이고 crud에 특화되어 있어 crud만 한다면 생산성에 도움이 됨


3. RedisTemplate으로 세밀하게 제어하기

특정 자료형(List, Set, SortedSet 등)을 직접 다루거나 키 설계에 자유도를 높이고 싶을 때 사용한다.

StringRedisTemplate
문자열 중심의 작업을 할 때 별도 설정 없이 바로 주입받아 사용할 수 있는 빈(Bean)임. opsForValue(), opsForSet() 등의 메서드로 Redis 명령어를 호출한다.

ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
ops.set("key", "value"); // SET 명령

Custom RedisTemplate 설정
객체를 JSON 형태로 직렬화하여 저장하고 싶다면 직접 RedisTemplate을 빈으로 등록해야 함.

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, ItemDto> itemRedisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, ItemDto> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);
        
        // Key는 문자열, Value는 JSON으로 직렬화 설정
        template.setKeySerializer(RedisSerializer.string());
        template.setValueSerializer(RedisSerializer.json());
        return template;
    }
}

4. 요약 및 결론

  • Repository 방식: 단순 CRUD 위주의 작업이나 JPA 스타일의 개발 환경에 적합함. 내부적으로 Hash 자료형을 사용함.

  • Template 방식: Redis의 다양한 데이터 구조(Set, Sorted Set 등)를 활용해야 하거나, 직렬화 방식을 커스터마이징해야 할 때 필수적임.

프로젝트의 요구사항에 맞춰 두 방식을 적절히 혼합하여 사용하는 것이 효율적임.

profile
응집력있는 시간을 보내기 위한 블로그

0개의 댓글