📖 Scenario: You are building a simple key-value store using Redis and Python. This store will hold user information such as usernames and their favorite colors. Redis is a fast, in-memory database often used for caching and quick data retrieval.
🎯 Goal: Build a Python script that connects to Redis, stores user data as key-value pairs, retrieves the data, and finally deletes the keys to clean up.
📋 What You'll Learn
Create a Redis connection using redis-py
Store multiple user favorite colors as key-value pairs
Retrieve and print the stored values
Delete the keys from Redis
💡 Why This Matters
🌍 Real World
Redis is widely used for caching user preferences and session data in web applications for fast access.
💼 Career
Understanding how to use Redis with Python is valuable for backend developers working on scalable, high-performance applications.
Progress0 / 4 steps
1
Connect to Redis and set up initial data
Import the redis module and create a Redis client called r that connects to localhost on the default port. Then, create a dictionary called user_colors with these exact entries: 'alice': 'blue', 'bob': 'green', 'carol': 'red'.
Redis
Hint
Use redis.Redis() to connect. The dictionary keys and values must match exactly.
2
Store user colors in Redis
Use a for loop with variables user and color to iterate over user_colors.items(). Inside the loop, use r.set(user, color) to store each user's favorite color in Redis.
Redis
Hint
Use for user, color in user_colors.items(): and inside the loop call r.set(user, color).
3
Retrieve and decode user colors from Redis
Create an empty dictionary called retrieved_colors. Use a for loop with variable user to iterate over user_colors.keys(). Inside the loop, get the color from Redis using r.get(user), decode it to a string with .decode('utf-8'), and store it in retrieved_colors[user].
Redis
Hint
Remember Redis returns bytes, so decode with .decode('utf-8').
4
Delete the user keys from Redis
Use a for loop with variable user to iterate over user_colors.keys(). Inside the loop, delete each key from Redis using r.delete(user).
Redis
Hint
Use r.delete(user) inside the loop to remove keys.
Practice
(1/5)
1. What does the set() method do in redis-py?
easy
A. Lists all keys stored in Redis
B. Retrieves a value by key from Redis
C. Deletes a key from Redis
D. Stores a value with a specified key in Redis
Solution
Step 1: Understand the purpose of set()
The set() method is used to save data in Redis by associating a value with a key.
Step 2: Compare with other methods
get() retrieves data, delete() removes keys, and keys() lists keys, so they do not store data.
Final Answer:
Stores a value with a specified key in Redis -> Option D
Quick Check:
set() means store data [OK]
Hint: Remember: set = save data, get = retrieve data [OK]
Common Mistakes:
Confusing set() with get()
Thinking set() deletes keys
Assuming set() lists keys
2. Which of the following is the correct syntax to get a value for key 'name' using redis-py?
easy
A. r.get('name')
B. r.get(name)
C. r.get['name']
D. r.get{name}
Solution
Step 1: Identify correct method call syntax
In Python, method calls use parentheses with arguments inside, so r.get('name') is correct.
Step 2: Check argument format
The key must be a string, so it needs quotes. Options A, B, and D have syntax errors or missing quotes.
Final Answer:
r.get('name') -> Option A
Quick Check:
Method call with parentheses and string key [OK]
Hint: Use parentheses and quotes for string keys in method calls [OK]
Common Mistakes:
Omitting quotes around string keys
Using square brackets instead of parentheses
Using curly braces instead of parentheses
3. What will be the output of this code snippet?
import redis
r = redis.Redis()
r.set('color', 'blue')
value = r.get('color')
print(value)
medium
A. blue
B. b'blue'
C. None
D. Error
Solution
Step 1: Understand Redis returns bytes
The get() method returns the value as bytes, so value is b'blue'.
Step 2: Print output
Printing value shows the bytes literal b'blue', not the decoded string.
Final Answer:
b'blue' -> Option B
Quick Check:
Redis returns bytes, so output shows b'...' [OK]
Hint: Remember: Redis get returns bytes, not decoded string [OK]
Common Mistakes:
Expecting a plain string without decoding
Assuming None if key exists
Thinking code raises error
4. Identify the error in this code snippet:
import redis
r = redis.Redis()
r.set('age', 30)
age = r.get('age')
print(age)
medium
A. get() returns bytes, need decoding
B. Cannot store integer directly with set()
C. Missing Redis server connection parameters
D. Syntax error in print statement
Solution
Step 1: Check data storage
Redis-py converts integers to strings automatically, so storing 30 is valid.
Step 2: Check retrieval and printing
get() returns bytes, so printing age shows bytes, not a readable string or integer. Decoding is needed.
Final Answer:
get() returns bytes, need decoding -> Option A
Quick Check:
Decode bytes after get() to read value [OK]
Hint: Always decode bytes from get() before printing [OK]
Common Mistakes:
Thinking set() rejects integers
Ignoring bytes return type from get()
Assuming print syntax error
5. You want to store user info as a dictionary in Redis using redis-py. Which approach correctly saves and retrieves the dictionary?
hard
A. Store dictionary as string with set() and retrieve with get() without decoding
B. Directly use set() with the dictionary and get() to retrieve
C. Use set() with json.dumps() to save and json.loads() after get()
D. Use hmset() to save and hgetall() to retrieve
Solution
Step 1: Understand Redis stores strings/bytes
Redis cannot store Python dicts directly; they must be converted to strings.
Step 2: Use JSON to serialize and deserialize
Using json.dumps() converts dict to string for set(), and json.loads() converts back after get().
Step 3: Evaluate other options
hmset() is deprecated; direct dict storage fails; storing string without decoding causes errors.
Final Answer:
Use set() with json.dumps() and json.loads() after get() -> Option C
Quick Check:
Serialize dict to string before storing, deserialize after retrieval [OK]
Hint: Serialize dict with JSON before set(), deserialize after get() [OK]
Common Mistakes:
Trying to store dict directly
Using deprecated hmset() method
Not decoding bytes before json.loads()
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.