반응형
Redis는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈소스 데이터 구조 저장소입니다.
Redis란?
Redis는 Key - Value로 값을 저장하는 in-memory 데이터베이스입니다.
Redis는 주 기억장치인 RAM에 정보를 저장하므로 Hard Disk(Magnetic Disk)에 저장하는 DB보다 빠른 성능을 발휘할 수 있습니다. 또한 KEY - VALUE(hash) 구조로 되었기 때문에 SQL문으로 검색하는 RDBMS보다 효율적입니다.
그러나 hash 구조로 되어 있어서 SQL처럼 다양한 검색이 안된다는 단점이 있습니다.
Redis 사용법
- 의존성 추가
- RedisConfig
- Redis에 RefreshToken을 저장하는 방법
- Redis에 저장된 RefreshToken을 조회하는 방법
- 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
반응형