Open In App

Difference between Redis Pub/sub vs Redis streams

Last Updated : 27 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Redis Pub/Sub (Publish/Subscribe) and Redis Streams are both features of the Redis database that enable real-time messaging and event-driven communication, but they have distinct use cases and characteristics.

Redis Pub/Sub (Publish/Subscribe)

Redis Pub/Sub is a messaging paradigm where there are two main components: publishers and subscribers. Publishers send messages (events) to channels, and subscribers receive messages from the channels they are interested in. It’s a simple and efficient way to implement a publish/subscribe system for real-time communication within an application.

Differences:

  • Channels: Pub/Sub relies on channels. Publishers send messages to specific channels, and subscribers listen to one or more channels they are interested in.
  • Message Delivery: In Pub/Sub, messages are sent to all subscribers of a channel (broadcasting), and subscribers don’t typically receive missed messages if they weren’t listening when a message was published.

When to Use Redis Pub/Sub

Redis Pub/Sub is suitable for scenarios where you need real-time broadcasting of events, such as:

  • Implementing chat systems.
  • Broadcasting updates to multiple clients (e.g., notifications).
  • Building a simple event-driven system within your application.

Pros:

  • Lightweight and efficient for simple messaging.
  • Well-suited for scenarios where all subscribers need to receive the same message.

Cons:

  • Limited message history (no built-in message storage).
  • Lack of message persistence.
  • Doesn’t support complex message filtering or message acknowledgment.

Redis Streams

Redis Streams is a more advanced data structure for managing event streams with more features compared to Pub/Sub. It allows you to append messages to a stream and read messages from it in a more structured and persistent way.

Differences:

  • Message Streams: Redis Streams work with message streams, which are append-only logs of messages.
  • Message Persistence: Messages are stored in the stream and can be read by consumers even if they were not connected when the message was sent.
  • Consumer Groups: Redis Streams supports consumer groups, allowing multiple consumers to work together to process messages from a stream while ensuring that each message is processed only once.

When to Use Redis Streams?

Redis Streams is more suitable when you need:

  • Message persistence and history.
  • The ability to read messages at your own pace, even if you weren’t connected when the messages were sent.
  • Message acknowledgment and guaranteed delivery with consumer groups.
  • Message streams with more structured data.

Pros:

  • Message persistence and history.
  • Supports complex stream processing scenarios.
  • Enables exactly-once message processing through consumer groups.
  • Allows consumers to read from the stream at their own pace.

Cons:

  • Slightly more complex to set up compared to Pub/Sub.
  • May be overkill for simple use cases where message persistence and ordering are not critical.

Which One to Use When?

  • Redis Pub/Sub is suitable for simple, real-time messaging scenarios where all subscribers need to receive the same message simultaneously. It’s lightweight and efficient for scenarios like broadcasting notifications or updates.
  • Redis Streams should be used when you require message persistence, ordering, and more advanced features like consumer groups. It’s a better choice for scenarios where message history, guaranteed message delivery, or complex message processing are necessary.

Differences between Redis Pub/Sub and Redis Streams:

Feature

Redis Pub/Sub

Redis Streams

Data strcuture

It ha publish/subscribe mechanism

It append only logs

Message persistence

Their is no message persistence by default

The message are persisted in a stream

Message histroy

No message history is maintained

Message history is stored in stream

Message filtering

Allamessages are recieved by subscribers

Subscibers can filter by patterm or consumer groups

Message delivery

At least once delivery semantics

Exactly once delivery semantics

Consumers groups

Not supported

Supported for multiple consumers

Scalability

Limited scalability

Scales better for large number of consumers

Message Retention

Their is no built-in message retention

Their is Configurable message retention

Use cases

Real time notification

Event sourcing



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads