📖 Scenario: You are managing a small online store's inventory using Redis. To save memory, you want to use Redis data structures that store data efficiently.
🎯 Goal: Build a Redis setup that uses memory-efficient data structures to store product information and stock counts.
📋 What You'll Learn
Create a Redis hash to store product names
Create a Redis sorted set to store product stock counts with product IDs as members
Set a threshold variable to identify low stock products
Write a Redis command to retrieve products with stock below the threshold
💡 Why This Matters
🌍 Real World
Many applications use Redis to store and query data quickly while saving memory, such as inventory systems, leaderboards, and session stores.
💼 Career
Understanding Redis data structures and commands is valuable for backend developers, DevOps engineers, and anyone working with fast, scalable data storage.
Progress0 / 4 steps
1
Create a Redis hash for products
Create a Redis hash called products with these exact entries: p1 with value "Apple", p2 with value "Banana", and p3 with value "Cherry".
Redis
Hint
Use the HSET command to add multiple fields and values to the hash products.
2
Create a Redis sorted set for stock counts
Create a Redis sorted set called stock with these exact members and scores: member p1 with score 50, member p2 with score 20, and member p3 with score 5.
Redis
Hint
Use the ZADD command to add members with scores to the sorted set stock.
3
Set a low stock threshold
Create a Redis string key called low_stock_threshold and set its value to 10.
Redis
Hint
Use the SET command to create a simple key-value pair for the threshold.
4
Retrieve products with low stock
Write a Redis command to get all members from the stock sorted set with scores less than the value stored in low_stock_threshold. Use ZREVRANGEBYSCORE or ZRANGEBYSCORE with the correct parameters.
Redis
Hint
Use ZRANGEBYSCORE stock -inf (10 to get members with scores less than 10.
Practice
(1/5)
1. Which Redis data structure is best suited for storing many small key-value pairs efficiently in memory?
easy
A. List
B. Set
C. Hash
D. String
Solution
Step 1: Understand Redis data structures
Hashes store multiple field-value pairs under one key, saving memory compared to many separate keys.
Step 2: Compare with other structures
Lists and sets store collections but are less memory-efficient for many small pairs; strings store single values only.
Final Answer:
Hash -> Option C
Quick Check:
Hashes = memory-efficient key-value pairs [OK]
Hint: Use hashes for many small key-value pairs to save memory [OK]
Common Mistakes:
Choosing List or Set for key-value pairs
Thinking String can store multiple pairs
Ignoring memory efficiency of Hashes
2. Which of the following is the correct Redis command to add a field-value pair to a hash named user:1?
easy
A. HSET user:1 name "Alice"
B. SADD user:1 name "Alice"
C. LPUSH user:1 name "Alice"
D. SET user:1 name "Alice"
Solution
Step 1: Identify the command for hashes
HSET adds or updates a field in a hash key in Redis.
Step 2: Check other commands
SADD is for sets, LPUSH for lists, SET for strings; none add fields to hashes.
Final Answer:
HSET user:1 name "Alice" -> Option A
Quick Check:
HSET = add field to hash [OK]
Hint: Use HSET to add fields to hashes in Redis [OK]
Common Mistakes:
Using SADD or LPUSH for hashes
Confusing SET with HSET
Incorrect command syntax
3. Given the Redis commands: HSET user:2 age 30 HSET user:2 city "NYC" What will HGETALL user:2 return?
medium
A. ["age", "30", "city", "NYC"]
B. ["user:2", "age", "30", "city", "NYC"]
C. ["age", 30, "city", "NYC"]
D. ["age", "30", "city"]
Solution
Step 1: Understand HSET commands
Two fields, 'age' and 'city', are set with values '30' and 'NYC' in hash 'user:2'.
Step 2: Check HGETALL output format
HGETALL returns a flat list of field-value pairs as strings.
Final Answer:
["age", "30", "city", "NYC"] -> Option A
Quick Check:
HGETALL returns field-value pairs list [OK]
Hint: HGETALL returns flat list of fields and values [OK]
Common Mistakes:
Expecting key name in output
Mixing data types (string vs integer)
Missing value for a field
4. You run the command HSET user:3 name "Bob" but get an error. Which is the most likely cause?
medium
A. Redis does not support hashes with string fields
B. The key user:3 already holds a string value
C. HSET requires a numeric field value
D. The field name is reserved and cannot be used
Solution
Step 1: Understand Redis type errors
If the key 'user:3' holds a string, trying to use HSET (hash command) causes a type error.
Step 2: Check other options
Field names are not reserved, HSET accepts strings, and Redis supports string fields in hashes.
Final Answer:
The key user:3 already holds a string value -> Option B
Quick Check:
Type mismatch causes HSET error [OK]
Hint: Check key type before using hash commands [OK]
Common Mistakes:
Assuming field names are restricted
Thinking HSET needs numeric values
Ignoring Redis data type rules
5. You want to store user preferences with many optional fields but minimize memory. Which Redis approach is best?
hard
A. Use a set with all field names as members
B. Use a list with all possible fields and empty strings for missing
C. Use separate string keys for each field
D. Use a hash with only fields that have values
Solution
Step 1: Consider memory efficiency
Hashes store only existing fields, saving memory by omitting empty or missing fields.
Step 2: Evaluate other options
Lists with empty strings waste memory; sets store unique members but not key-value pairs; separate keys increase overhead.
Final Answer:
Use a hash with only fields that have values -> Option D
Quick Check:
Hashes save memory by storing only present fields [OK]
Hint: Store only present fields in hashes to save memory [OK]
Common Mistakes:
Using lists with empty placeholders
Using sets for key-value data
Creating many separate keys
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.