Redis
메시지 브로커
- 많은 데이터들을 안전하고 효율적으로 전달하기 위해 사용
- 서버로부터 메시지를 받아, 비동기적으로 클라이언트에게 안전하게 전달해주는 역할을 하는 미들웨어
- 보통의 경우, 서버로부터 메시지를 전달받아 큐에 보관한 뒤, 알맞은 클라이언트에게 전달해주는 메시지 큐 구조의 메시지 브로커 사용
외부 메시지 브로커 사용 이유
- scale out 상황에서 내장된 메시지 브로커를 사용시 서로 다른 서버간 메시지 전송이 불가능
- 이를 해결하기 위해 외부 메시지 브로커를 사용해 서로 다른 서버간에도 메시지 전송이 가능하도록 사용
Pub/Sub
- 레디스는 메시지를 큐에 저장하지 않고, 클라이언트에게 메시지를 전달한 후 삭제
- 클라이언트가 하나의 topic을 구독하고, 해당 topic으로 발행되는 메시지들을 받는 구조
Redis 사용이유
- 빠른 속도
- DB 접근 전에 메모리에서 Cache를 가져다 쓰기 때문에 빠르다.
- 메시지 크기
- 이번 프로젝트에서는 채팅방에 속해있는 인원들에게 작은 크기의 메시지를 수신하면 되기 때문에 RabbitMQ나 Kafka 보다 Redis를 선택