Bird
Raised Fist0
Redisquery~20 mins

XTRIM for stream capping in Redis - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Stream Capping Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What is the effect of this XTRIM command?
Given a Redis stream named mystream with 1000 entries, what will be the number of entries after running this command?

XTRIM mystream MAXLEN 100
Redis
XTRIM mystream MAXLEN 100
AThe stream will have 1000 entries, no change occurs.
BThe stream will have exactly 900 entries, the newest entries removed.
CThe stream will have exactly 100 entries, the oldest entries removed.
DThe command will cause an error because MAXLEN requires a minimum of 1000.
Attempts:
2 left
💡 Hint
MAXLEN trims the stream to keep only the newest entries up to the specified count.
🧠 Conceptual
intermediate
2:00remaining
What does the ~ (approximate) flag do in XTRIM?
Consider the command:
XTRIM mystream MAXLEN ~ 100
What is the purpose of the ~ flag in this context?
Redis
XTRIM mystream MAXLEN ~ 100
AIt forces Redis to trim exactly 100 entries, no approximation allowed.
BIt allows Redis to trim the stream approximately to 100 entries for better performance.
CIt disables trimming and only returns the current length of the stream.
DIt causes an error because ~ is not a valid flag for XTRIM.
Attempts:
2 left
💡 Hint
The ~ flag is used to improve performance by allowing approximate trimming.
📝 Syntax
advanced
2:00remaining
Which XTRIM command syntax is correct to cap a stream to 500 entries approximately?
Choose the syntactically correct Redis command to trim mystream to approximately 500 entries.
AXTRIM mystream MAXLEN ~ 500
BXTRIM mystream MAXLEN 500 ~
CXTRIM mystream MAXLEN ~500
DXTRIM mystream MAXLEN=~ 500
Attempts:
2 left
💡 Hint
The approximate flag ~ must come immediately after MAXLEN.
❓ optimization
advanced
2:00remaining
Why use approximate trimming (~) instead of exact trimming in XTRIM?
What is the main advantage of using XTRIM mystream MAXLEN ~ 1000 over XTRIM mystream MAXLEN 1000?
AApproximate trimming disables trimming and only returns the stream length.
BApproximate trimming guarantees the stream length is exactly 1000 entries.
CApproximate trimming causes Redis to trim entries randomly.
DApproximate trimming reduces CPU usage by allowing Redis to trim in batches.
Attempts:
2 left
💡 Hint
Think about performance and resource usage when trimming large streams.
🔧 Debug
expert
2:00remaining
What error occurs with this XTRIM command?
Given the command:
XTRIM mystream MAXLEN -100
What will Redis respond?
Redis
XTRIM mystream MAXLEN -100
AAn error: 'ERR The MAXLEN argument must be a positive integer'
BThe stream is trimmed to 100 entries ignoring the negative sign.
CThe stream is cleared completely because negative length means zero entries.
DNo error, Redis treats -100 as a large positive number.
Attempts:
2 left
💡 Hint
MAXLEN must be a positive number; negative values are invalid.

Practice

(1/5)
1. What does the Redis XTRIM command do when used with the MAXLEN option?
easy
A. It renames the stream to a new key.
B. It adds new entries to the stream without removing any.
C. It limits the number of entries in a stream by removing the oldest ones.
D. It deletes the entire stream immediately.

Solution

  1. Step 1: Understand the purpose of XTRIM with MAXLEN

    The XTRIM command with MAXLEN is used to keep the stream size limited by removing old entries.
  2. Step 2: Identify the effect on the stream

    It removes the oldest entries to keep the stream length within the specified maximum.
  3. Final Answer:

    It limits the number of entries in a stream by removing the oldest ones. -> Option C
  4. Quick Check:

    XTRIM + MAXLEN = Remove oldest entries [OK]
Hint: XTRIM with MAXLEN trims oldest entries to cap stream size [OK]
Common Mistakes:
  • Thinking XTRIM adds entries instead of removing
  • Confusing XTRIM with deleting the whole stream
  • Assuming XTRIM renames the stream
2. Which of the following is the correct syntax to trim a Redis stream named mystream to keep at most 1000 entries approximately?
easy
A. XTRIM mystream MAXLEN ~1000
B. XTRIM mystream MAXLEN=1000
C. XTRIM mystream MAXLEN ~ 1000
D. XTRIM mystream MAXLEN 1000

Solution

  1. Step 1: Recall syntax for approximate trimming

    Approximate trimming uses the tilde (~) before the number in the XTRIM command.
  2. Step 2: Match correct syntax

    The correct syntax is XTRIM mystream MAXLEN ~1000 with spaces separating arguments.
  3. Final Answer:

    XTRIM mystream MAXLEN ~1000 -> Option A
  4. Quick Check:

    Approximate trim syntax = MAXLEN ~ number [OK]
Hint: Use tilde (~) with MAXLEN for approximate trimming [OK]
Common Mistakes:
  • Omitting the tilde (~) for approximate trimming
  • Using equals sign (=) which is invalid syntax
  • Not spacing arguments correctly
3. Given the following commands executed sequentially:
XADD mystream * field1 value1
XADD mystream * field2 value2
XADD mystream * field3 value3
XTRIM mystream MAXLEN 2

How many entries will mystream contain after these commands?
medium
A. 2 entries
B. 3 entries
C. 1 entry
D. 0 entries

Solution

  1. Step 1: Count entries added before trimming

    Three entries are added to mystream using XADD.
  2. Step 2: Apply XTRIM with MAXLEN 2

    The XTRIM command trims the stream to keep only the latest 2 entries, removing the oldest one.
  3. Final Answer:

    2 entries -> Option A
  4. Quick Check:

    3 added, trimmed to 2 = 2 entries [OK]
Hint: XTRIM MAXLEN keeps newest entries, removes oldest [OK]
Common Mistakes:
  • Assuming no trimming happens after XTRIM
  • Counting all added entries without trimming
  • Thinking XTRIM deletes all entries
4. You run the command XTRIM mystream MAXLEN ~1000 but notice the stream still has over 2000 entries. What is the most likely reason?
medium
A. The command syntax is incorrect and was ignored.
B. The approximate trim (~) allows the stream to exceed the limit temporarily.
C. XTRIM only works on empty streams.
D. The stream key name is case-sensitive and was misspelled.

Solution

  1. Step 1: Understand approximate trimming behavior

    Using the tilde (~) means trimming is approximate and may allow the stream to temporarily exceed the limit.
  2. Step 2: Eliminate other causes

    Syntax is correct, XTRIM works on non-empty streams, and key name issues would cause errors, not approximate trimming behavior.
  3. Final Answer:

    The approximate trim (~) allows the stream to exceed the limit temporarily. -> Option B
  4. Quick Check:

    Approximate trim = possible temporary size excess [OK]
Hint: Approximate trim (~) may exceed limit briefly [OK]
Common Mistakes:
  • Assuming syntax error caused no trimming
  • Thinking XTRIM only works on empty streams
  • Ignoring approximate trimming behavior
5. You want to keep a Redis stream events capped at 500 entries but want to improve trimming speed by allowing approximate trimming. Which command should you use?
hard
A. XTRIM events MAXLEN = 500
B. XTRIM events MAXLEN 500
C. XTRIM events MINLEN ~ 500
D. XTRIM events MAXLEN ~500

Solution

  1. Step 1: Identify approximate trimming syntax

    Approximate trimming uses the tilde (~) before the number with MAXLEN.
  2. Step 2: Choose correct command

    XTRIM events MAXLEN ~500 caps the stream at about 500 entries with faster trimming.
  3. Final Answer:

    XTRIM events MAXLEN ~500 -> Option D
  4. Quick Check:

    Approximate trim = MAXLEN ~ number [OK]
Hint: Use MAXLEN ~ number for fast approximate trimming [OK]
Common Mistakes:
  • Using MINLEN instead of MAXLEN
  • Using equals sign (=) which is invalid
  • Omitting the tilde (~) for approximate trimming
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