Bird
Raised Fist0
Redisquery~20 mins

Denormalization for speed in Redis - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Denormalization Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What is the output of this Redis command sequence?
Given these Redis commands executed in order:

1. HSET user:1000 name "Alice" age 30
2. HSET user:1000:profile city "New York" country "USA"
3. HMGET user:1000 name age
4. HMGET user:1000:profile city country

What will be the combined output of commands 3 and 4?
Redis
HSET user:1000 name "Alice" age 30
HSET user:1000:profile city "New York" country "USA"
HMGET user:1000 name age
HMGET user:1000:profile city country
A["Alice", null] and ["New York", "USA"]
B["name", "age"] and ["city", "country"]
C["Alice", "30"] and ["New York", "USA"]
D[null, null] and [null, null]
Attempts:
2 left
💡 Hint
Remember that HMGET returns the values of the specified fields in the hash.
🧠 Conceptual
intermediate
1:30remaining
Why is denormalization used in Redis for speed?
Which of the following best explains why denormalization is commonly used in Redis to improve speed?
ADenormalization reduces the number of queries by storing related data together, avoiding expensive joins.
BDenormalization compresses data to use less memory, making queries faster.
CDenormalization encrypts data to improve security and speed.
DDenormalization automatically indexes all fields for faster search.
Attempts:
2 left
💡 Hint
Think about how Redis handles data and what it lacks compared to relational databases.
📝 Syntax
advanced
2:00remaining
Which Redis command syntax correctly denormalizes user and order data?
You want to store user data and their latest order details together in Redis for fast access. Which command correctly sets a hash with user info and embedded order info?
AHSET user:2000 name "Bob" age 25 order_id 1234 order_total 99.99
BHSET user:2000 name "Bob" age 25; HSET order:1234 total 99.99
CHMSET user:2000 name "Bob" age 25; SET order:1234 99.99
DHSET user:2000 name "Bob" age 25 order {id:1234, total:99.99}
Attempts:
2 left
💡 Hint
Redis hashes store flat field-value pairs; nested objects require flattening.
❓ optimization
advanced
2:30remaining
How to optimize read speed with denormalized data in Redis?
You have user profiles and their recent activity logs stored separately. To optimize read speed for a dashboard showing both, what is the best denormalization strategy?
AUse Redis streams to store activity logs and join with profiles at query time.
BKeep user profiles and activity logs in separate keys and query both on demand.
CStore only user profiles in Redis and fetch activity logs from a relational database.
DStore user profile and recent activity fields together in one hash per user.
Attempts:
2 left
💡 Hint
Denormalization means combining related data to reduce queries.
🔧 Debug
expert
3:00remaining
Why does this denormalized Redis data retrieval fail?
You stored denormalized user data with order info as:

HSET user:3000 name "Carol" age 40 order_id 5678 order_total 150.00

But this command returns null:

HMGET user:3000 order

Why?
ABecause Redis hashes cannot store multiple fields with underscores.
BBecause 'order' is not a field; fields are 'order_id' and 'order_total', so HMGET 'order' returns null.
CBecause HMGET requires all fields to be numeric.
DBecause the key 'user:3000' does not exist.
Attempts:
2 left
💡 Hint
Check the exact field names stored in the hash.

Practice

(1/5)
1. What is the main benefit of denormalization in Redis?
easy
A. Faster data retrieval by storing related data together
B. Reducing memory usage by splitting data into many keys
C. Ensuring data is always normalized for consistency
D. Automatically backing up data to disk

Solution

  1. Step 1: Understand denormalization purpose

    Denormalization means storing related data together to avoid multiple lookups.
  2. Step 2: Identify main benefit in Redis context

    This reduces the number of Redis calls, making data retrieval faster.
  3. Final Answer:

    Faster data retrieval by storing related data together -> Option A
  4. Quick Check:

    Denormalization = Faster access [OK]
Hint: Denormalization means fewer lookups, so speed improves [OK]
Common Mistakes:
  • Confusing denormalization with normalization
  • Thinking it reduces memory usage
  • Assuming it automatically backs up data
2. Which Redis data structure is best suited for denormalization to store related user info together?
easy
A. Hash
B. List
C. Set
D. Sorted Set

Solution

  1. Step 1: Review Redis data structures

    Lists store ordered values, Sets store unique unordered values, Sorted Sets store ordered unique values, Hashes store field-value pairs.
  2. Step 2: Choose structure for related fields

    Hashes allow storing multiple fields (like name, email) under one key, ideal for denormalized user info.
  3. Final Answer:

    Hash -> Option A
  4. Quick Check:

    Hash = field-value pairs for related data [OK]
Hint: Use Hash for grouped related fields in one key [OK]
Common Mistakes:
  • Choosing List which is just ordered values
  • Using Set which stores unique values without fields
  • Picking Sorted Set which is for ordered unique elements
3. Given these Redis commands for denormalized user data:
HSET user:1000 name "Alice" age 30 city "NY"

What does HGETALL user:1000 return?
medium
A. ["name", "Alice", "age", "30"]
B. ["name", "Alice", "age", "30", "city", "NY"]
C. ["name", "Alice", "age", 30, "city", "NY"]
D. ["user:1000", "Alice", "30", "NY"]

Solution

  1. Step 1: Understand HSET command

    HSET stores fields and values under key 'user:1000' as strings: name=Alice, age=30, city=NY.
  2. Step 2: Understand HGETALL output format

    HGETALL returns an array of field-value pairs as strings in order stored.
  3. Final Answer:

    ["name", "Alice", "age", "30", "city", "NY"] -> Option B
  4. Quick Check:

    HGETALL returns all fields and values as strings [OK]
Hint: HGETALL returns flat list of field-value strings [OK]
Common Mistakes:
  • Expecting numeric types instead of strings
  • Confusing key name with fields
  • Partial field-value pairs returned
4. You try to denormalize user data with:
HSET user:2000 name "Bob" age 25 city "LA"

But later HGET user:2000 age returns nil. What is the likely cause?
medium
A. HSET command was not executed properly
B. The field name is misspelled in HGET
C. The age field was overwritten or deleted
D. The key user:2000 does not exist

Solution

  1. Step 1: Check if key exists

    If key did not exist, all fields would be missing, but only age is missing.
  2. Step 2: Consider field deletion or overwrite

    Age field might have been deleted or overwritten after initial HSET, causing nil return.
  3. Final Answer:

    The age field was overwritten or deleted -> Option C
  4. Quick Check:

    Missing field means deleted or overwritten [OK]
Hint: Missing field usually means it was deleted or overwritten [OK]
Common Mistakes:
  • Assuming key does not exist when other fields exist
  • Misspelling field name in HGET
  • Thinking HSET failed without error
5. You want to speed up a Redis app by denormalizing product and category data. Which approach is best?
hard
A. Use a sorted set for categories and a list for products
B. Store product and category in separate keys and join at runtime
C. Normalize data fully to avoid duplication
D. Store product info and category name together in one hash key per product

Solution

  1. Step 1: Understand denormalization goal

    Denormalization stores related data together to reduce lookups and speed access.
  2. Step 2: Evaluate options for product-category data

    Storing product info and category name together in one hash avoids extra lookups, speeding queries.
  3. Step 3: Compare other options

    Separate keys require joins (slower), sorted sets/lists don't group related fields, full normalization slows access.
  4. Final Answer:

    Store product info and category name together in one hash key per product -> Option D
  5. Quick Check:

    Denormalize related data together for speed [OK]
Hint: Put related data in one hash to avoid joins [OK]
Common Mistakes:
  • Keeping data normalized causing slow joins
  • Using sorted sets/lists without grouping fields
  • Duplicating data without grouping properly
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