Redis 기본설정 - Spring Boot(Java)

Redis 설정

개요

Java Spring Boot 환경에서 Redis 기본 설정과 간단한 사용법을 정리합니다.

Lettuce를 사용했습니다. spring-boot-starter-data-redis에서 기본 지원하므로 별도 의존성 추가는 필요 없습니다.

Dependencies

Spring Boot 버전은 2.4.2를 기준으로 작성했습니다.

dependencies {
    ...
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
}

Properties - Redis 기본 설정 정보 입력

spring.redis.port=6379
spring.redis.host=host
spring.redis.password=password

RedisConfig.java - Redis 기본 설정

@Configuration
public class RedisConfig {
    @Value("${spring.redis.host}")
    private String redisHost;

    @Value("${spring.redis.port}")
    private int redisPort;

    @Value("${spring.redis.password}")
    private String redisPassword;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration;
        LettuceConnectionFactory lettuceConnectionFactory;
        redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(redisHost);
        redisStandaloneConfiguration.setPort(redisPort);
        redisStandaloneConfiguration.setPassword(redisPassword);  // elasticache 의 경우 비밀번호 설정이 없으므로 미사용
        lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
        return lettuceConnectionFactory;
    }

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

사용 예시

@RequiredArgsConstructor
public class ... {

    private final RedisTemplate redisTemplate;

    // 데이터 저장
    public ... testRedisSet(){
        ...
        ValueOperations<String, Object> vop = redisTemplate.opsForValue();
        vop.set("key","value",1,Timeunit.MINUTES)  // 만료시간 1분 뒤 key에 대한 value 데이터를 Redis에 기록
        ...
    }

    // 데이터 호출
    public ... testRedisGet(){
        ...
        ValueOperations<String, Object> vop = redisTemplate.opsForValue();
        String data = (String) vop.get("key"); // redisTemplate.setValueSerializer(new StringRedisSerializer()); 저장값을 String으로 해놓았기 때문에 받을 때도 문자열로 받도록 처리
        ...
    }

    // 삭제
    public ... testRedisDelete(){
        redisTemplate.delete("key");
    }
}

설정한 Redis는 어디에 사용할 예정인가?

  • Spring Boot Security: public Authentication getAuthentication(String token) 인증정보 조회 시 Redis 데이터 선조회
  • Cache 서비스
  • Redis pub/sub을 이용한 영상 콜백 처리
  • Email, Mobile 같은 인증 처리