Bird
Raised Fist0
Redisquery~10 mins

Why streams handle event logs in Redis - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to add an event to a Redis stream named 'mystream'.

Redis
XADD mystream * event [1]
Drag options to blanks, or click blank then click option'
Astart
Bstart_time
Cstart_event
Dstart_value
Attempts:
3 left
💡 Hint
Common Mistakes
Using a complex or incorrect event name.
Forgetting the asterisk (*) for automatic ID generation.
2fill in blank
medium

Complete the code to read the latest event from the Redis stream 'mystream'.

Redis
XREVRANGE mystream + - COUNT [1]
Drag options to blanks, or click blank then click option'
A5
B10
C0
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using COUNT 0 which returns no events.
Using a large COUNT when only one event is needed.
3fill in blank
hard

Fix the error in the command to read events from 'mystream' starting from ID '0-0'.

Redis
XRANGE mystream [1] +
Drag options to blanks, or click blank then click option'
A0
B0-0
C-
D*
Attempts:
3 left
💡 Hint
Common Mistakes
Using '0' instead of '0-0' as the start ID.
Using '-' or '*' which are not valid start IDs.
4fill in blank
hard

Fill both blanks to create a consumer group named 'mygroup' for the stream 'mystream' starting from the beginning.

Redis
XGROUP CREATE mystream [1] [2]
Drag options to blanks, or click blank then click option'
Amygroup
B0
C0-0
D$
Attempts:
3 left
💡 Hint
Common Mistakes
Using '0' instead of '0-0' as the starting ID.
Using '$' which starts from the latest event.
5fill in blank
hard

Fill all three blanks to read new messages from 'mystream' for consumer 'consumer1' in group 'mygroup'.

Redis
XREADGROUP GROUP [1] [2] COUNT 1 STREAMS mystream [3]
Drag options to blanks, or click blank then click option'
Amygroup
Bconsumer1
C>
D0-0
Attempts:
3 left
💡 Hint
Common Mistakes
Using '0-0' instead of '>' which reads all messages from the start.
Mixing up group and consumer names.

Practice

(1/5)
1. Why are Redis streams well-suited for handling event logs?
easy
A. Because they only store one event at a time
B. Because they delete old events automatically
C. Because they store events in order with unique IDs
D. Because they require complex setup to use

Solution

  1. Step 1: Understand Redis streams storage

    Redis streams store events sequentially with unique IDs, preserving order.
  2. Step 2: Match this to event log needs

    Event logs need ordered, unique entries to track actions accurately.
  3. Final Answer:

    Because they store events in order with unique IDs -> Option C
  4. Quick Check:

    Streams = Ordered unique events [OK]
Hint: Streams keep events ordered with unique IDs [OK]
Common Mistakes:
  • Thinking streams delete old events automatically
  • Believing streams store only one event
  • Assuming streams need complex setup
2. Which Redis command is used to add a new event to a stream?
easy
A. XREAD
B. XADD
C. XRANGE
D. XDEL

Solution

  1. Step 1: Identify command to add events

    XADD is the Redis command designed to add new entries to a stream.
  2. Step 2: Differentiate from other commands

    XREAD reads events, XRANGE queries a range, XDEL deletes entries.
  3. Final Answer:

    XADD -> Option B
  4. Quick Check:

    XADD = Add event [OK]
Hint: XADD adds events to streams [OK]
Common Mistakes:
  • Confusing XADD with XREAD or XRANGE
  • Thinking XDEL adds events
  • Using XRANGE to add events
3. Given the Redis stream commands below, what will XRANGE mystream - + return?

XADD mystream * event "login" user "alice"
XADD mystream * event "logout" user "bob"
medium
A. All events in 'mystream' from the oldest to newest
B. Only the first event added to 'mystream'
C. An error because XRANGE needs a count parameter
D. No events because the stream is empty

Solution

  1. Step 1: Understand XRANGE command

    XRANGE with '-' and '+' returns all entries from oldest to newest in the stream.
  2. Step 2: Check stream content after XADD commands

    Two events were added: a login by alice and a logout by bob.
  3. Final Answer:

    All events in 'mystream' from the oldest to newest -> Option A
  4. Quick Check:

    XRANGE - + = all events [OK]
Hint: XRANGE - + returns all stream events [OK]
Common Mistakes:
  • Thinking XRANGE returns only one event
  • Believing XRANGE requires a count parameter
  • Assuming stream is empty after XADD
4. You run the command XADD mystream * event but get an error. What is the likely cause?
medium
A. XRANGE command is required before XADD
B. Using * instead of a specific ID
C. Stream 'mystream' does not exist
D. Missing field-value pairs after the event name

Solution

  1. Step 1: Check XADD syntax requirements

    XADD requires field-value pairs after the ID; 'event' lacks a value.
  2. Step 2: Validate other options

    Using '*' is correct for auto ID, streams can be created automatically, and XRANGE is unrelated.
  3. Final Answer:

    Missing field-value pairs after the event name -> Option D
  4. Quick Check:

    XADD needs field-value pairs [OK]
Hint: XADD needs pairs: field and value [OK]
Common Mistakes:
  • Thinking * is invalid for ID
  • Assuming stream must exist before XADD
  • Believing XRANGE must run first
5. You want to track user actions in a Redis stream but only keep the last 100 events to save memory. Which command option helps achieve this?
hard
A. XADD mystream MAXLEN ~ 100 * event "login" user "alice"
B. XADD mystream * event "login" user "alice" COUNT 100
C. XADD mystream * event "login" user "alice" MAXLEN 100
D. XADD mystream * event "login" user "alice" LIMIT 100

Solution

  1. Step 1: Understand MAXLEN option in XADD

    MAXLEN limits stream length; '~' makes it approximate for better performance.
  2. Step 2: Identify correct syntax for trimming

    XADD mystream MAXLEN ~ 100 * event "login" user "alice" uses 'MAXLEN ~ 100' which trims stream to about 100 entries efficiently.
  3. Final Answer:

    XADD mystream MAXLEN ~ 100 * event "login" user "alice" -> Option A
  4. Quick Check:

    MAXLEN ~ 100 trims stream length [OK]
Hint: Use MAXLEN ~ 100 to trim stream length efficiently [OK]
Common Mistakes:
  • Using MAXLEN without ~ causes slower trimming
  • Using COUNT or LIMIT which are invalid here
  • Not trimming stream and causing memory issues
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