Bird
Raised Fist0
Redisquery~20 mins

XACK for acknowledging messages in Redis - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Redis XACK Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What does the XACK command return after acknowledging a message?
Given a Redis stream consumer group, when you run XACK to acknowledge a message ID, what is the output of the command?
Redis
XACK mystream mygroup 1526985058136-0
A1
B0
CAn error message
DThe acknowledged message ID
Attempts:
2 left
💡 Hint
Think about what XACK returns when it successfully acknowledges a message.
🧠 Conceptual
intermediate
2:00remaining
Why is acknowledging messages with XACK important in Redis streams?
In Redis streams, what is the main purpose of using the XACK command after processing a message?
ATo remove the message from the stream permanently
BTo reset the stream to the beginning
CTo delete the consumer group
DTo mark the message as processed so it won't be delivered again to the same consumer group
Attempts:
2 left
💡 Hint
Think about how Redis tracks which messages are pending for a consumer group.
📝 Syntax
advanced
2:00remaining
Which XACK command syntax is correct to acknowledge multiple messages?
You want to acknowledge two messages with IDs 1609459200000-0 and 1609459200001-0 in the consumer group group1 on stream mystream. Which command is syntactically correct?
AXACK mystream group1 '1609459200000-0 1609459200001-0'
BXACK mystream group1 1609459200000-0 1609459200001-0
CXACK mystream group1 (1609459200000-0, 1609459200001-0)
DXACK mystream group1 [1609459200000-0, 1609459200001-0]
Attempts:
2 left
💡 Hint
XACK accepts multiple message IDs separated by spaces without brackets or quotes.
🔧 Debug
advanced
2:00remaining
Why does this XACK command return 0 instead of 1?
You run the command XACK mystream mygroup 1609459200000-0 but it returns 0. What is the most likely reason?
AThe consumer group does not exist
BThe stream is empty
CThe message ID is not pending in the consumer group's pending entries list
DThe message ID does not exist in the stream
Attempts:
2 left
💡 Hint
XACK only acknowledges messages that are pending for the group.
❓ optimization
expert
2:00remaining
How to efficiently acknowledge a large batch of messages in Redis streams?
You have processed 10,000 messages from a Redis stream consumer group and want to acknowledge them all efficiently. Which approach is best?
AUse XACK with a Lua script to batch acknowledge messages in chunks
BRun 10,000 separate XACK commands, one per message ID
CRun a single XACK command listing all 10,000 message IDs separated by spaces
DDelete the stream to remove all messages at once
Attempts:
2 left
💡 Hint
Consider Redis command length limits and network overhead.

Practice

(1/5)
1. What is the primary purpose of the XACK command in Redis streams?
easy
A. To delete a stream
B. To add a new message to a stream
C. To acknowledge that a message has been processed by a consumer
D. To create a new consumer group

Solution

  1. Step 1: Understand the role of XACK

    XACK is used in Redis streams to mark messages as processed by a consumer in a consumer group.
  2. Step 2: Differentiate from other commands

    Adding messages uses XADD, deleting streams uses DEL, and creating groups uses XGROUP. XACK specifically acknowledges messages.
  3. Final Answer:

    To acknowledge that a message has been processed by a consumer -> Option C
  4. Quick Check:

    XACK purpose = acknowledge processed message [OK]
Hint: XACK always marks messages as processed in consumer groups [OK]
Common Mistakes:
  • Confusing XACK with XADD or XGROUP
  • Thinking XACK deletes messages
  • Assuming XACK creates consumer groups
2. Which of the following is the correct syntax to acknowledge a message with ID 1526985058136-0 in consumer group group1 on stream mystream?
easy
A. XACK 1526985058136-0 mystream group1
B. XACK mystream group1 1526985058136-0
C. XACK mystream 1526985058136-0 group1
D. XACK group1 mystream 1526985058136-0

Solution

  1. Step 1: Recall XACK command syntax

    The syntax is: XACK <stream> <group> <ID> [ID ...].
  2. Step 2: Match the given IDs and names

    Stream is mystream, group is group1, and message ID is 1526985058136-0, so the correct order is XACK mystream group1 1526985058136-0.
  3. Final Answer:

    XACK mystream group1 1526985058136-0 -> Option B
  4. Quick Check:

    XACK syntax = XACK stream group ID [OK]
Hint: XACK order: stream, group, then message IDs [OK]
Common Mistakes:
  • Swapping group and stream names
  • Placing message ID before stream or group
  • Using incorrect command order
3. Given the following Redis commands executed in order:
XGROUP CREATE mystream group1 $ MKSTREAM
XADD mystream 1609459200000-0 field1 value1
XREADGROUP GROUP group1 consumer1 COUNT 1 STREAMS mystream >
XACK mystream group1 1609459200000-0
What will be the result of the XACK command?
medium
A. 1
B. 0
C. An error because the message ID does not exist
D. An error because the consumer group does not exist

Solution

  1. Step 1: Analyze the commands and message ID

    The group 'group1' is created on 'mystream'. A message is added with XADD, then read by consumer1. The XACK acknowledges message ID 1609459200000-0.
  2. Step 2: Confirm message ID existence and acknowledgment

    XADD adds the message with the specified ID 1609459200000-0. The XREADGROUP delivers it to consumer1's pending entries. XACK then acknowledges it and returns 1, the count of acknowledged messages.
  3. Final Answer:

    1 -> Option A
  4. Quick Check:

    XACK returns count of acknowledged messages = 1 [OK]
Hint: XACK returns number of messages acknowledged [OK]
Common Mistakes:
  • Assuming XACK returns message content
  • Thinking XACK errors if message ID is valid
  • Confusing XACK with XREADGROUP output
4. You run the command XACK mystream group1 1609459200000-0 but get an error: (error) NOGROUP No such consumer group 'group1' for stream 'mystream'. What is the most likely cause?
medium
A. The stream 'mystream' does not exist
B. The message ID is invalid
C. The XACK command syntax is incorrect
D. The consumer group 'group1' was not created on 'mystream'

Solution

  1. Step 1: Interpret the error message

    The error says no such consumer group 'group1' for stream 'mystream', meaning the group does not exist on that stream.
  2. Step 2: Identify the cause

    Either the group was never created or was created on a different stream. The stream existing or message ID validity does not cause this error.
  3. Final Answer:

    The consumer group 'group1' was not created on 'mystream' -> Option D
  4. Quick Check:

    Error NOGROUP means missing consumer group [OK]
Hint: NOGROUP error means consumer group missing on stream [OK]
Common Mistakes:
  • Assuming stream absence causes NOGROUP error
  • Blaming message ID format
  • Misreading error as syntax issue
5. You have a Redis stream orders with a consumer group processors. You want to acknowledge multiple messages with IDs 1609459200000-0, 1609459200001-0, and 1609459200002-0 in one command. Which command correctly does this?
hard
A. XACK orders processors 1609459200000-0 1609459200001-0 1609459200002-0
B. XACK orders processors [1609459200000-0, 1609459200001-0, 1609459200002-0]
C. XACK orders processors "1609459200000-0 1609459200001-0 1609459200002-0"
D. XACK orders processors {1609459200000-0,1609459200001-0,1609459200002-0}

Solution

  1. Step 1: Recall XACK syntax for multiple IDs

    XACK accepts multiple message IDs separated by spaces without brackets or quotes.
  2. Step 2: Evaluate options

    XACK orders processors 1609459200000-0 1609459200001-0 1609459200002-0 lists IDs separated by spaces correctly. Options B, C, and D use brackets, quotes, or braces which are invalid syntax.
  3. Final Answer:

    XACK orders processors 1609459200000-0 1609459200001-0 1609459200002-0 -> Option A
  4. Quick Check:

    Multiple IDs in XACK = space-separated list [OK]
Hint: List multiple IDs space-separated in XACK command [OK]
Common Mistakes:
  • Using brackets or quotes around IDs
  • Separating IDs with commas
  • Passing IDs as a single string
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