[Spring-boot] Redis를 활용한 RefreshToken 저장 및 조회

2023. 6. 10. 23:13·Backend/Spring
반응형
Redis는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈소스 데이터 구조 저장소입니다.

Redis란?

Redis는 Key - Value로 값을 저장하는 in-memory 데이터베이스입니다.

Redis는 주 기억장치인 RAM에 정보를 저장하므로 Hard Disk(Magnetic Disk)에 저장하는 DB보다 빠른 성능을 발휘할 수 있습니다. 또한 KEY - VALUE(hash) 구조로 되었기 때문에 SQL문으로 검색하는 RDBMS보다 효율적입니다.

그러나 hash 구조로 되어 있어서 SQL처럼 다양한 검색이 안된다는 단점이 있습니다.

 

Redis 사용법

  1. 의존성 추가
  2. RedisConfig
  3. Redis에 RefreshToken을 저장하는 방법
  4. Redis에 저장된 RefreshToken을 조회하는 방법
  5. Redis에 저장된 RefreshToken을 삭제하는 방법

 

1. 의존성 추가

	implementation 'org.springframework.boot:spring-boot-starter-data-redis' // redis

 

2. RedisConfig

@Configuration
public class RedisConfig {

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

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

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisHost, redisPort);
        return lettuceConnectionFactory;
    }

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

@Configuration 어노테이션을 통해 RedisConfig를 설정 파일로 나타냅니다.

클래스에 있는 @Bean들은 Spring-boot가 스캔 한 뒤, 구성합니다.

 

3. Redis에 RefreshToken을 저장하는 방법

public void saveRefreshToken(String refreshToken, String snsId) { 
	redisTemplate.opsForValue().set(refreshToken, snsId, Duration.ofDays(3));
}

redis의 장점중 하나이다. TTL 기능과 OpsForValue 기능이다.TTL 기능을 통해서 유효기간을 설정할 수 있으며, OpsForValue를 통해서 String 연산을 위한 연산자를 반환합니다.set을 통해서 값을 저장하였습니다.

 

4. RefreshToken을 조회하는 방법

public String getsnsIdFromRefreshToken(String refreshToken) { 
	return redisTemplate.opsForValue().get(refreshToken);
}

set을 통해서 값을 저장할 때 설정했던 key 값으로 조회를 할 수 있다.

 

5. RefreshToken을 삭제하는 방법

public void deleteRefreshToken(String refreshToken) {
	redisTemplate.delete(refreshToken);
}

set을 통해서 값을 저장할 때 설정했던 key 값으로 삭제를 할 수 있다.


그런데 왜? RefreshToken을 Redis에 저장하는 거야?

https://solution-is-here.tistory.com/197

 

[왜?] RefreshToken을 Redis에 저장할까?

Redis를 통한 RefreshToken 관리, Redis를 통해 RefreshToken 구현하기 구글에 RefreshToken Redis를 검색하는 나오는 결과다. 항상 사람들은 RefreshToken을 Redis에 저장해야 한다고 말했다. 그런데 왜? RefreshToken을 R

solution-is-here.tistory.com

 

반응형
'Backend/Spring' 카테고리의 다른 글
  • [Spring-boot] Spring Security 인증 인가
  • [Spring-boot]JWT를 이용해 AccessToken 발급, 검사, 정보 추출
  • [POSTMAN] 쿠키 설정 및 확인하기
  • 백엔드의 꽃(?) 데이터 베이스 정규화와 Spring boot으로 정규화 구현에 대해
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
    • 분류 전체보기 (217)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (7) N
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
[Spring-boot] Redis를 활용한 RefreshToken 저장 및 조회
상단으로

티스토리툴바