[JWT] JWT 구현하기(Feat. Redis) (4) - Redis 설정(RedisRepositoryConfig, RedisService)

u-nij·2022년 10월 25일
0

JWT 구현하기

목록 보기
5/8
post-thumbnail

RedisRepositoryConfig.class

@RequiredArgsConstructor
@Configuration
@EnableRedisRepositories
public class RedisRepositoryConfig {

    private final RedisProperties redisProperties;

    // lettuce
    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory(redisProperties.getHost(), redisProperties.getPort());
    }

    // redis-cli 사용을 위한 설정
    @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;
    }
}

Redis의 연결을 정의하는 클래스이다. RedisConnectionFactory를 통해 내장 혹은 외부의 Redis와 연결한다. RedisTemplate를 통해 RedisConnection에서 넘겨준 byte 값을 객체 직렬화한다.

RedisTemplate을 열어보면 Hash, Set 등 다양한 방식을 사용해 Redis에 데이터를 저장하는 방법을 알 수 있다.

RedisService.class

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class RedisService {

    private final RedisTemplate<String, String> redisTemplate;

    @Transactional
    public void setValues(String key, String value){
        redisTemplate.opsForValue().set(key, value);
    }

    // 만료시간 설정 -> 자동 삭제
    @Transactional
    public void setValuesWithTimeout(String key, String value, long timeout){
        redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.MILLISECONDS);
    }

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

    @Transactional
    public void deleteValues(String key) {
        redisTemplate.delete(key);
    }
}

Redis를 편히 사용하기 위해 메서드화했다.

  • setValues(String key, String value): {key, value] 값을 저장한다.
  • setValuesWithTimeout(String key, String value, long timeout): {key, value] 값을 유효시간(timeout)과 함께 저장할 수 있다. 단위는 토큰의 유효기간 단위와 동일하게 milliseconds로 지정했다.
  • getValues(String key): key 값을 사용해 value 값을 가져온다.
  • deleteValues(String key): key 값을 사용해 데이터를 삭제한다.

0개의 댓글