개요
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 같은 인증 처리