📖 Scenario: You are managing a Redis list that stores recent user actions on a website. To keep the list from growing too large and using too much memory, you want to keep only the latest 5 actions.
🎯 Goal: Build a Redis command sequence that adds user actions to a list and then trims the list to keep only the latest 5 entries using LTRIM.
📋 What You'll Learn
Create a Redis list called user_actions.
Add 7 specific actions to the user_actions list using LPUSH.
Use LTRIM to keep only the latest 5 actions in the list.
Verify the list contains exactly the 5 most recent actions.
💡 Why This Matters
🌍 Real World
Websites and apps often track recent user actions or events in Redis lists to quickly access the latest data without storing too much history.
💼 Career
Knowing how to cap Redis lists is important for backend developers and DevOps engineers to manage memory and performance in real-time applications.
Progress0 / 4 steps
1
Create the Redis list and add 7 actions
Use the LPUSH command to add these exact actions to the list called user_actions in this order: "login", "view_page", "click_ad", "logout", "login", "purchase", "logout".
Redis
Hint
Use LPUSH with the list name user_actions and add all 7 actions in one command.
2
Set the maximum list size to 5
Create a variable called max_size and set it to 5 to represent the maximum number of actions to keep in the list.
Redis
Hint
Just assign the number 5 to a variable named max_size.
3
Trim the list to keep only the latest 5 actions
Use the LTRIM command on the user_actions list to keep only the elements from index 0 to max_size - 1.
Redis
Hint
Use LTRIM user_actions 0 4 because list indexes start at 0 and you want 5 items total.
4
Verify the list contains only the latest 5 actions
Use the LRANGE command on user_actions from index 0 to -1 to get all elements and confirm the list has exactly 5 actions.
Redis
Hint
Use LRANGE user_actions 0 -1 to get the full list contents.
Practice
(1/5)
1. What does the Redis command LTRIM mylist 0 9 do to the list mylist?
easy
A. Clears the entire list.
B. Removes the first 10 elements and keeps the rest.
C. Keeps only the last 10 elements of the list and removes the rest.
D. Keeps only the first 10 elements of the list and removes the rest.
Solution
Step 1: Understand LTRIM parameters
The command LTRIM mylist 0 9 keeps elements from index 0 to 9 inclusive.
Step 2: Effect on list size
This means only the first 10 elements remain; all others are removed.
Final Answer:
Keeps only the first 10 elements of the list and removes the rest. -> Option D
Quick Check:
LTRIM 0 9 keeps first 10 elements [OK]
Hint: LTRIM 0 9 means keep first 10 items only [OK]
Common Mistakes:
Confusing start and stop indexes
Thinking it removes first 10 instead of keeping them
Assuming it keeps last 10 elements
2. Which of the following is the correct syntax to keep only the last 5 elements of a Redis list named tasks using LTRIM?
easy
A. LTRIM tasks -5 -1
B. LTRIM tasks 0 4
C. LTRIM tasks 5 -1
D. LTRIM tasks -1 -5
Solution
Step 1: Understand negative indexes in LTRIM
Negative indexes count from the end: -1 is last element, -5 is fifth from last.
Step 2: Select correct range for last 5 elements
Using LTRIM tasks -5 -1 keeps elements from fifth last to last, i.e., last 5 elements.
Final Answer:
LTRIM tasks -5 -1 -> Option A
Quick Check:
Negative indexes keep last elements [OK]
Hint: Use negative indexes to keep last elements [OK]
Common Mistakes:
Using positive indexes to try to keep last elements
Reversing negative indexes order
Using invalid syntax with start > stop
3. Given a Redis list colors with elements ["red", "green", "blue", "yellow", "purple"], what will be the list content after executing LTRIM colors 1 3?
medium
A. ["green", "blue", "yellow"]
B. ["blue", "yellow", "purple"]
C. ["red", "green", "blue"]
D. ["yellow", "purple"]
Solution
Step 1: Identify indexes to keep
LTRIM colors 1 3 keeps elements from index 1 to 3 inclusive.
Step 2: Extract elements at those indexes
Indexes 1 to 3 are "green", "blue", "yellow".
Final Answer:
["green", "blue", "yellow"] -> Option A
Quick Check:
LTRIM keeps specified index range [OK]
Hint: Indexes start at 0; keep elements between start and stop [OK]
Common Mistakes:
Including element at index 0 by mistake
Confusing index ranges
Assuming LTRIM removes elements inside range
4. You run LTRIM mylist 5 2 on a Redis list. What will happen?
medium
A. The command will return an error due to invalid range.
B. The list will be emptied because start index is greater than stop index.
C. The list will be trimmed to elements from index 5 to 2, keeping those elements.
D. The list will remain unchanged.
Solution
Step 1: Understand LTRIM behavior with start > stop
If start index is greater than stop index, Redis trims the list to empty.
Step 2: Apply to given command
Since 5 > 2, LTRIM mylist 5 2 empties the list.
Final Answer:
The list will be emptied because start index is greater than stop index. -> Option B
Quick Check:
LTRIM with start > stop empties list [OK]
Hint: Start index must be ≤ stop; else list empties [OK]
Common Mistakes:
Expecting an error instead of empty list
Thinking list remains unchanged
Assuming it keeps elements in reverse order
5. You want to keep only the most recent 20 messages in a Redis list chatlog. Which sequence of commands correctly caps the list size after adding a new message "Hello"?
hard
A. RPUSH chatlog "Hello"; LTRIM chatlog -20 0
B. RPUSH chatlog "Hello"; LTRIM chatlog 0 19
C. LPUSH chatlog "Hello"; LTRIM chatlog 0 19
D. LPUSH chatlog "Hello"; LTRIM chatlog -20 -1
Solution
Step 1: Understand list direction and adding new messages
Using LPUSH adds new messages to the start (index 0), so recent messages are at the front.
Step 2: Use LTRIM to keep first 20 elements
To keep the most recent 20 messages, trim to indexes 0 to 19, or equivalently LTRIM chatlog 0 19. Negative indexes also work but must match direction.
Step 3: Match push and trim commands
Since LPUSH adds to front, LTRIM chatlog 0 19 keeps first 20 recent messages. LPUSH chatlog "Hello"; LTRIM chatlog -20 -1 uses LPUSH and LTRIM chatlog -20 -1, which keeps last 20 elements, but since new messages are at front, last 20 are oldest. So LPUSH chatlog "Hello"; LTRIM chatlog -20 -1 is incorrect.
Step 4: Correct option
LPUSH chatlog "Hello"; LTRIM chatlog 0 19 uses LPUSH and LTRIM chatlog 0 19, which correctly keeps the 20 most recent messages at front.
Final Answer:
LPUSH chatlog "Hello"; LTRIM chatlog 0 19 -> Option C
Quick Check:
LPUSH + LTRIM 0 19 keeps recent 20 messages [OK]
Hint: Match push direction with LTRIM range to keep recent items [OK]
Common Mistakes:
Using RPUSH but trimming front indexes
Using negative indexes incorrectly with LPUSH
Trimming wrong range causing oldest messages to stay
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.