Bird
Raised Fist0
Redisquery~5 mins

Stream entry IDs in Redis - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Stream entry ID in Redis Streams?
A Stream entry ID is a unique identifier for each message in a Redis Stream. It consists of two parts: a timestamp in milliseconds and a sequence number, formatted as <millisecondsTime>-<sequenceNumber>.
Click to reveal answer
beginner
How does Redis generate Stream entry IDs if you don't specify one?
Redis automatically generates the ID using the current server time in milliseconds and a sequence number starting at 0 for entries created in the same millisecond.
Click to reveal answer
intermediate
Why does the Stream entry ID have two parts: timestamp and sequence number?
The timestamp ensures ordering by time, and the sequence number handles multiple entries created in the same millisecond, making each ID unique and ordered.
Click to reveal answer
intermediate
What happens if you provide a custom Stream entry ID when adding an entry?
You can specify a custom ID, but it must be greater than the last ID in the stream to keep the order. Otherwise, Redis will return an error.
Click to reveal answer
beginner
Explain the format of a Stream entry ID with an example.
A Stream entry ID looks like '1657891234567-0'. Here, '1657891234567' is the timestamp in milliseconds, and '0' is the sequence number for entries created at that exact millisecond.
Click to reveal answer
What are the two parts of a Redis Stream entry ID?
ATimestamp and sequence number
BUser ID and timestamp
CSequence number and user ID
DTimestamp and message content
If multiple entries are added in the same millisecond, how does Redis ensure unique IDs?
ABy rejecting entries added in the same millisecond
BBy changing the timestamp format
CBy using random numbers
DBy adding a sequence number after the timestamp
What happens if you try to add a stream entry with an ID smaller than the last entry's ID?
ARedis accepts it without error
BRedis returns an error
CRedis automatically updates the ID
DRedis deletes the last entry
Which part of the Stream entry ID helps maintain the order of messages?
ATimestamp
BSequence number
CMessage content
DUser ID
What is the format of a Redis Stream entry ID?
A<sequence>-<timestamp>
B<user>-<timestamp>
C<timestamp>-<sequence>
D<timestamp>_<sequence>
Describe how Redis Stream entry IDs are structured and why they are designed that way.
Think about how Redis keeps messages unique and in order.
You got /4 concepts.
    Explain what happens when you add a stream entry with a custom ID and what rules it must follow.
    Consider the importance of ordering in streams.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does a Redis stream entry ID consist of?
      easy
      A. Only a timestamp
      B. A timestamp and a sequence number separated by a dash
      C. Only a sequence number
      D. A random string generated by Redis

      Solution

      1. Step 1: Understand Redis stream entry ID format

        Redis stream entry IDs are made of two parts: a timestamp and a sequence number.
      2. Step 2: Identify the separator

        These two parts are separated by a dash (-), for example, 1526985058136-0.
      3. Final Answer:

        A timestamp and a sequence number separated by a dash -> Option B
      4. Quick Check:

        Stream entry ID = timestamp-sequence [OK]
      Hint: Remember: ID = timestamp + dash + sequence number [OK]
      Common Mistakes:
      • Thinking ID is only timestamp
      • Confusing sequence number as random string
      • Ignoring the dash separator
      2. Which of the following is the correct way to add a new entry with an auto-generated ID to a Redis stream named mystream?
      easy
      A. XADD mystream # field1 value1
      B. XADD mystream 1234567890-0 field1 value1
      C. XADD mystream * field1 value1
      D. XADD mystream $ field1 value1

      Solution

      1. Step 1: Recall how to auto-generate IDs in Redis streams

        Using '*' as the ID in the XADD command tells Redis to generate the ID automatically.
      2. Step 2: Check the options for correct syntax

        XADD mystream * field1 value1 uses '*', which is the correct way to auto-generate the ID.
      3. Final Answer:

        XADD mystream * field1 value1 -> Option C
      4. Quick Check:

        Use '*' to auto-generate stream entry ID [OK]
      Hint: Use '*' in XADD to auto-generate IDs [OK]
      Common Mistakes:
      • Using a fixed ID instead of '*'
      • Using '#' or '$' which are invalid here
      • Forgetting to include field-value pairs
      3. Given the following Redis stream entries:
      1526985058136-0: field1=value1
      1526985058136-1: field1=value2
      What will be the ID of the next entry if you add it with XADD mystream * field1 value3 immediately after?
      medium
      A. 1526985058136-2
      B. 1526985058137-0
      C. 1526985058136-0
      D. 1526985058135-0

      Solution

      1. Step 1: Understand sequence number increment for same timestamp

        When multiple entries share the same timestamp, Redis increments the sequence number.
      2. Step 2: Identify the next sequence number

        Existing entries have sequence numbers 0 and 1 for timestamp 1526985058136, so the next will be 2.
      3. Final Answer:

        1526985058136-2 -> Option A
      4. Quick Check:

        Next sequence number increments by 1 for same timestamp [OK]
      Hint: Next ID increments sequence if timestamp same [OK]
      Common Mistakes:
      • Assuming timestamp always increments
      • Repeating an existing ID
      • Using a lower timestamp than existing
      4. You run the command XADD mystream 1526985058136-1 field1 value1 but get an error. What is the most likely cause?
      medium
      A. The ID 1526985058136-1 already exists in the stream
      B. The timestamp part is not a valid number
      C. The field name is missing
      D. The sequence number is negative

      Solution

      1. Step 1: Understand Redis stream ID uniqueness

        Each stream entry ID must be unique; duplicate IDs cause errors.
      2. Step 2: Check the given ID

        If 1526985058136-1 already exists, adding it again causes an error.
      3. Final Answer:

        The ID 1526985058136-1 already exists in the stream -> Option A
      4. Quick Check:

        Duplicate stream entry IDs cause errors [OK]
      Hint: Duplicate IDs cause errors in XADD [OK]
      Common Mistakes:
      • Assuming timestamp format error
      • Forgetting field-value pairs
      • Thinking negative sequence numbers are allowed
      5. You want to add multiple entries to a Redis stream with IDs that must be strictly increasing, but your system clock is not reliable and may go backward. Which approach ensures correct stream entry IDs?
      hard
      A. Use fixed sequence numbers with zero timestamps
      B. Manually specify IDs with timestamps from your system clock
      C. Generate random IDs and add them to the stream
      D. Use XADD mystream * to let Redis generate IDs automatically

      Solution

      1. Step 1: Understand the problem with unreliable clocks

        Manually specifying timestamps can cause IDs to go backward if the clock is wrong.
      2. Step 2: Use Redis auto-generated IDs

        Using '*' lets Redis generate strictly increasing IDs based on its own clock and sequence logic.
      3. Final Answer:

        Use XADD mystream * to let Redis generate IDs automatically -> Option D
      4. Quick Check:

        Auto-generated IDs ensure increasing order despite clock issues [OK]
      Hint: Let Redis generate IDs with '*' for reliable ordering [OK]
      Common Mistakes:
      • Trusting unreliable system clock for IDs
      • Using fixed or random IDs causing duplicates
      • Ignoring Redis auto-generation feature
      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