redis 사이트에서 windows 사용 시 ubuntu로 설치를 해야 하기 때문에 ubuntu version을, mac 사용 시 macOs 버전을 설치해 주면 된다.
build.gradle
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
application.yml
spring:
redis:
host: localhost // 배포하게 된다면 배포된 서버의 endpoint로
port: 6379
password: 필요는 없겠지만, 만약 비밀번호를 설정해준다면 작성
RedisConfig.java
@Configuration
public class RedisConfig {
// Redis 호스트 및 포트
@Value("${spring.data.redis.host}")
private String redisHost;
@Value("${spring.data.redis.port}")
private int redisPort;
// Redis 연결 팩토리 빈 설정
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(redisHost, redisPort);
}
// Redis 템플릿 빈 설정
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
redisTemplate.setDefaultSerializer(RedisSerializer.string());
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
//리스너어댑터 설정
@Bean
MessageListenerAdapter messageListenerConverter() {
return new MessageListenerAdapter(new RedisSubService());
}
// Redis 메시지 리스너 컨테이너 빈 설정
@Bean
public RedisMessageListenerContainer redisMessageListener(RedisConnectionFactory connectionFactory){
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(messageListenerConverter(), topic());
return container;
}
//pre, sub 용 채널 설정
@Bean
ChannelTopic topic() {
return new ChannelTopic("topic1");
}
}
RedisUtil.java
@Component
@RequiredArgsConstructor
public class RedisUtil {
//Redis에 접근하기 위한 Spring의 Redis 템플릿 클래스
private final StringRedisTemplate redisTemplate;
//지정된 키(key)에 해당하는 데이터를 Redis에서 가져오는 메서드
public String getData(String key) {
ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
return valueOperations.get(key);
}
//지정된 키(key)에 값을 저장하는 메서드
public void setData(String key, String value) {
ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
valueOperations.set(key, value);
}
//지정된 키(key)에 값을 저장하고, 지정된 시간(duration) 후에 데이터가 만료되도록 설정하는 메서드
public void setDataExpire(String key, String value, long duration) {
ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
Duration expireDuration = Duration.ofSeconds(duration);
valueOperations.set(key, value, expireDuration);
}
//지정된 키(key)에 해당하는 데이터를 Redis에서 삭제하는 메서드
public void deleteData(String key) {
redisTemplate.delete(key);
}
}
Message.java
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class ChatMessage {
private String sender;
private String context;
}
'Spring' 카테고리의 다른 글
WebSocket - 실시간 양방향 소통 (0) | 2024.03.19 |
---|---|
[Spring] 인프런 - 스프링 입문 스프링부트(3) (1) | 2024.02.28 |
[Spring] 인프런 - 스프링 입문 스프링부트(2) (0) | 2024.02.12 |
[Spring] Spring Boot DevTools - 자동 컴파일, 업데이트 (1) | 2024.02.12 |
[Spring] 인프런 - 스프링 입문 스프링부트(1-2) (0) | 2024.02.11 |