Redis/Spring Data Redis

[Spring Data Redis] Redis Pub / Sub

오늘도개발 2024. 5. 14. 09:31

 

1. Pub / Sub 이란?

 

 - 발행 / 구독 구조

 

 - 데이터는 middleware 를 통해서 전달

 

 

2.  Redis Pub / Sub  구조 특징

 

  - 실시간으로 빠르게 통신

 

  - 데이터가 유실이 될 가능성이 있음 ( 큐를 이용해 저장 x )

 

  - 최대 1회 전송 패턴이 적합한 경우 ( 중복 전송 X )

 

 

3.  Redis Pub / Sub  이용 채팅방 구현

 

  - Redis config 안에 Listener 관련 코드 추가

 

    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer() {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(redisConnectionFactory());
        return container;
    }

 

 

 

  - Service를 이용해 해당 기능 구현

 

@Service
@RequiredArgsConstructor
public class ChatService implements MessageListener {
    private final RedisMessageListenerContainer container;
    private final RedisTemplate<String,String> redisTemplate;

    public void enterChatRoom(String chatRoomName){
        container.addMessageListener(this, new ChannelTopic(chatRoomName));
    }

    public void sendMessage(String chatRoomName, String msg){
        redisTemplate.convertAndSend(chatRoomName, msg);
    }

    public void exitChatRoom(String chatRoomName){
        container.removeMessageListener(this);
    }

    @Override
    public void onMessage(Message message, byte[] pattern) {
        System.out.println("message = " + message);
    }
}

'Redis > Spring Data Redis' 카테고리의 다른 글

[Spring Data Redis] Streams  (0) 2024.05.14
[Spring Data Redis] HyperLogLog  (0) 2024.05.13
[Spring Data Redis] Sorted Sets  (0) 2024.05.13
[Spring Data Redis] Hashes  (0) 2024.05.13
[Spring Data Redis] Sets  (0) 2024.05.13