Bird
Raised Fist0
Redisquery~5 mins

Pub/sub vs streams comparison in Redis - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is Redis Pub/Sub?
Redis Pub/Sub is a messaging pattern where messages are sent to channels and all subscribers to those channels receive the messages instantly. It is a simple, real-time broadcast system.
Click to reveal answer
beginner
What is Redis Streams?
Redis Streams is a data structure that stores messages in an append-only log. Consumers can read messages at their own pace and keep track of what they have processed.
Click to reveal answer
intermediate
How does message delivery differ between Pub/Sub and Streams?
In Pub/Sub, messages are delivered only to active subscribers at the time of publishing and are not stored. In Streams, messages are stored and can be read later by consumers, even if they were offline when the message was published.
Click to reveal answer
intermediate
Which Redis messaging system supports message persistence and consumer groups?
Redis Streams supports message persistence and consumer groups, allowing multiple consumers to share the workload and track message processing.
Click to reveal answer
beginner
When should you choose Redis Pub/Sub over Streams?
Choose Redis Pub/Sub for simple, real-time messaging where you don't need to store messages or track consumers. It's best for live notifications or chat where messages are transient.
Click to reveal answer
Which Redis feature stores messages for later consumption?
APub/Sub
BStreams
CHashes
DSets
In Redis Pub/Sub, what happens if a subscriber is offline when a message is published?
AThe message is stored and delivered later
BThe message is lost for that subscriber
CThe subscriber receives the message when back online
DThe message is queued automatically
Which Redis messaging system supports consumer groups for load balancing?
APub/Sub
BStreams
CLists
DSorted Sets
What is a key advantage of Redis Pub/Sub?
AMessage persistence
BReal-time message delivery
CMessage replay
DConsumer tracking
Which Redis feature is better for building a chat application with message history?
APub/Sub
BStreams
CSets
DHashes
Explain the main differences between Redis Pub/Sub and Redis Streams.
Think about message storage, delivery timing, and consumer management.
You got /4 concepts.
    When would you choose Redis Streams over Pub/Sub in a project?
    Consider use cases involving message durability and consumer coordination.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which Redis feature is best suited for instant message delivery without storing messages?
      easy
      A. Hashes
      B. Streams
      C. Pub/Sub
      D. Sorted Sets

      Solution

      1. Step 1: Understand Pub/Sub purpose

        Pub/Sub delivers messages instantly to subscribers without saving them.
      2. Step 2: Compare with Streams

        Streams store messages for later processing, unlike Pub/Sub.
      3. Final Answer:

        Pub/Sub -> Option C
      4. Quick Check:

        Instant delivery without storage = Pub/Sub [OK]
      Hint: Instant delivery without storage means Pub/Sub [OK]
      Common Mistakes:
      • Confusing Streams with Pub/Sub for instant delivery
      • Thinking Streams do not store messages
      • Choosing data structures unrelated to messaging
      2. Which of the following is the correct Redis command to publish a message to a channel named news?
      easy
      A. PUBLISH news "Hello"
      B. XADD news * message "Hello"
      C. SUBSCRIBE news
      D. GET news

      Solution

      1. Step 1: Identify publish command syntax

        The PUBLISH command sends a message to a channel immediately.
      2. Step 2: Check other commands

        XADD adds to streams, SUBSCRIBE listens, GET retrieves keys, so only PUBLISH fits.
      3. Final Answer:

        PUBLISH news "Hello" -> Option A
      4. Quick Check:

        Publish message = PUBLISH command [OK]
      Hint: Use PUBLISH to send messages to channels [OK]
      Common Mistakes:
      • Using XADD instead of PUBLISH for Pub/Sub
      • Confusing SUBSCRIBE with PUBLISH
      • Using GET which is for keys, not messages
      3. Given the following Redis commands, what will be the output of XREAD COUNT 2 STREAMS mystream 0 after adding two entries with XADD mystream * field1 val1 and XADD mystream * field2 val2?
      medium
      A. An error because COUNT is invalid here
      B. Two entries with their IDs and fields returned
      C. No entries returned because 0 means no messages
      D. Only the first entry returned ignoring COUNT

      Solution

      1. Step 1: Understand XADD and XREAD

        XADD adds entries to a stream with unique IDs. XREAD reads entries from streams.
      2. Step 2: Analyze XREAD COUNT 2 STREAMS mystream 0

        This reads up to 2 entries from 'mystream' starting from ID 0 (the beginning).
      3. Final Answer:

        Two entries with their IDs and fields returned -> Option B
      4. Quick Check:

        XREAD with COUNT 2 returns up to 2 entries [OK]
      Hint: XREAD with COUNT returns that many entries from stream start [OK]
      Common Mistakes:
      • Thinking COUNT is invalid in XREAD
      • Assuming 0 means no messages returned
      • Expecting only one entry despite COUNT 2
      4. You wrote this Redis command to subscribe to a channel: SUBSCRIBE mychannel. But your client never receives messages published with PUBLISH mychannel "Hello". What is the likely problem?
      medium
      A. The client must use XREAD to receive Pub/Sub messages
      B. PUBLISH command syntax is wrong
      C. Streams must be used instead of Pub/Sub for messages
      D. The client is not listening because it did not call SUBSCRIBE correctly

      Solution

      1. Step 1: Verify SUBSCRIBE usage

        SUBSCRIBE must be called on the client to listen to messages; if not, no messages arrive.
      2. Step 2: Check other options

        PUBLISH syntax is correct; Streams and XREAD are unrelated to Pub/Sub listening.
      3. Final Answer:

        The client is not listening because it did not call SUBSCRIBE correctly -> Option D
      4. Quick Check:

        Client must SUBSCRIBE to receive messages [OK]
      Hint: Client must SUBSCRIBE to receive published messages [OK]
      Common Mistakes:
      • Thinking PUBLISH syntax is wrong
      • Confusing Streams with Pub/Sub for message delivery
      • Using XREAD to get Pub/Sub messages
      5. You want to build a task queue in Redis where tasks must be stored reliably and processed even if the worker restarts. Which Redis feature should you use and why?
      hard
      A. Use Streams because they store messages and support replaying tasks
      B. Use Sorted Sets because they keep tasks ordered by score
      C. Use Pub/Sub because it delivers messages instantly without storage
      D. Use Hashes because they store key-value pairs efficiently

      Solution

      1. Step 1: Identify requirements for task queue

        Tasks must be stored reliably and processed even after worker restarts.
      2. Step 2: Compare Redis features

        Pub/Sub does not store messages, so tasks can be lost. Streams store messages and allow replay.
      3. Final Answer:

        Use Streams because they store messages and support replaying tasks -> Option A
      4. Quick Check:

        Reliable storage and replay = Streams [OK]
      Hint: Reliable task queues need Streams, not Pub/Sub [OK]
      Common Mistakes:
      • Choosing Pub/Sub for reliable storage
      • Confusing Sorted Sets with message storage
      • Using Hashes which are not for message queues
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard