지난 포스트를 통해 Redis의 DataBase로의 기능에 대해 살펴보았습니다.
이번에는 Redis의 주요 기능 중 Pub/Sub 기능에 대해 알아보겠습니다. Pub/Sub은 하나의 메시지 브로커라고 할 수 있습니다.
일반적으로 저희는 API를 통해서 서버 간의 동기적 통신을 하곤 합니다.
그러나 많은 데이터들을 안전하고 효율적으로 전달하기 위해서 메시지 브로커라는 것을 사용할 수도 있습니다. 이는 보통 서버로부터 메시지를 받아서, 비동기적으로 클라이언트에게 안전하게 전달해주는 역할을 하는 미들웨어를 뜻합니다.
보통의 경우, 서버로부터 메시지를 전달 받아 큐에 보관한 뒤, 알맞는 클라이언트에게 전달해주는 메시지 큐(Message Queue) 구조의 메시지 브로커가 사용됩니다. 평소에 문자 메시지를 보내고 받는 것도 이러한 메시지 큐 구조에 의한 것이라고 할 수 있습니다.
레디스도 메시지 브로커로서의 기능을 가지지만, 메시지 큐와는 조금 다르다고 할 수 있습니다. 메시지 큐는 메시지를 큐에 저장한 뒤 이를 전송하지만, 레디스는 저장하지 않고, 클라이언트에게 메시지를 전달한 후 이를 바로 삭제합니다. 레디스의 이러한 기능이 바로 Pub/Sub입니다.
pub/sub은 클라이언트가 하나의 topic을 구독(subscribe) 하고,
해당 topic으로 발행(publish)되는 메시지들을 받는 구조로 만들어져 있습니다.
topic이라는 매개체를 통해서 메시지를 전달하므로,
수신자와 발신자가 서로를 알지 못하더라도 메시지를 송수신할 수 있게 됩니다.
Pub/Sub은 전송한 메시지의 내용을 저장하지 않고, 클라이언트에게 전달한 후 이를 바로 삭제합니다.
따라서 지속적으로 전달받은 메시지의 데이터를 저장하여 관리해야하는 경우, 이 기능은 적합하지 않을 수 있습니다. 그러나 push 메시지처럼 실시간으로 로그인된 사용자에게 메시지를 전달해야 하는 기능을 구성할 경우, Pub/Sub은 매우 유용하게 사용될 것으로 보입니다.
다음 포스트에서는 간단한 실습 예제를 통해 Redis를 직접 다루어 보도록 하겠습니다.