Why caching patterns matter in Redis - Performance Analysis
When using caching with Redis, the way we store and retrieve data affects how fast our app runs.
We want to know how the time to get data changes as we use different caching patterns.
Analyze the time complexity of this caching pattern in Redis.
# Cache user data with a key
SET user:123 "{\"name\": \"Alice\", \"age\": 30}"
# Retrieve cached user data
GET user:123
# Cache a list of user IDs
LPUSH users 123
LPUSH users 456
# Retrieve all user IDs
LRANGE users 0 -1
This code stores individual user data and a list of user IDs, then retrieves them.
Look for repeated actions that take time.
- Primary operation: Retrieving all user IDs with
LRANGEwhich reads each item in the list. - How many times: Once per user ID in the list, so it grows with the number of users.
Getting one user by key is quick and stays fast no matter how many users there are.
But getting all user IDs from the list takes longer as the list grows.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 users | 10 operations to get all IDs |
| 100 users | 100 operations to get all IDs |
| 1000 users | 1000 operations to get all IDs |
Pattern observation: Retrieving the whole list grows linearly with the number of users.
Time Complexity: O(n)
This means the time to get all user IDs grows directly with how many users are stored.
[X] Wrong: "Getting all items from a Redis list is always fast and constant time."
[OK] Correct: Retrieving all items requires reading each one, so time grows with list size.
Understanding how caching patterns affect speed helps you design fast apps and answer questions about efficiency clearly.
What if we changed the list of user IDs to a Redis set? How would the time complexity of retrieving all IDs change?
Practice
Solution
Step 1: Understand caching purpose
Caching temporarily stores data to reduce the time needed to get it again.Step 2: Identify correct caching behavior in Redis
Redis caching speeds up apps by storing data for quick access, not permanent saving or immediate deletion.Final Answer:
It stores data temporarily to make data retrieval faster -> Option DQuick Check:
Caching = Temporary fast storage [OK]
- Thinking caching saves data permanently
- Believing caching slows down the app
- Confusing caching with immediate data deletion
Solution
Step 1: Recall Redis syntax for setting key with expiration
The correct command is SET with EX option to set expiration in seconds.Step 2: Check each option's correctness
SET key value EX 60 uses SET key value EX 60 which is valid. Others misuse commands or order.Final Answer:
SET key value EX 60 -> Option BQuick Check:
SET with EX sets key and expiration [OK]
- Using GET instead of SET to set values
- Misplacing EXPIRE and SET commands
- Trying to delete keys with expiration time
SET user:1 "Alice" EX 10
GET user:1What will the GET command return if run 15 seconds after the SET?
Solution
Step 1: Understand expiration effect
SET with EX 10 means key expires after 10 seconds, so after 15 seconds key is gone.Step 2: Predict GET result after expiration
GET on expired key returns nil (no value), not error or empty string.Final Answer:
nil -> Option AQuick Check:
Expired key returns nil on GET [OK]
- Expecting old value after expiration
- Thinking GET returns error on expired keys
- Confusing empty string with nil
SET session:123 "active"
EXPIRE session:123 0What is the problem with this code?
Solution
Step 1: Understand EXPIRE with 0 seconds
EXPIRE with 0 seconds deletes the key immediately.Step 2: Identify the effect on the key
After EXPIRE session:123 0, the key is deleted immediately, which may be unintended.Final Answer:
Expiration time 0 deletes the key immediately -> Option CQuick Check:
EXPIRE 0 deletes key immediately [OK]
- Thinking EXPIRE 0 removes expiration (never expires)
- Assuming EXPIRE syntax is wrong
- Believing SET must always have expiration
Solution
Step 1: Understand caching with data freshness
To keep data fresh, cache keys should expire and be deleted when data changes.Step 2: Evaluate options for update handling
Set key with expiration and delete key on user update uses expiration and deletes key on update, ensuring fresh data. Others risk stale data or no caching.Final Answer:
Set key with expiration and delete key on user update -> Option AQuick Check:
Expire + delete on update keeps cache fresh [OK]
- Not deleting keys on data change
- Using no expiration causing stale cache
- Avoiding caching user data unnecessarily
Ready to prove it?
Pass the test and this pattern moves unknown
