Bird
Raised Fist0
Redisquery~10 mins

Serialization considerations in Redis - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to serialize a Python dictionary to a JSON string before storing it in Redis.

Redis
import json
import redis
r = redis.Redis()
data = {'name': 'Alice', 'age': 30}
r.set('user:1', [1])
Drag options to blanks, or click blank then click option'
Astr(data)
Bjson.loads(data)
Cjson.dumps(data)
Ddata.encode()
Attempts:
3 left
💡 Hint
Common Mistakes
Using json.loads which deserializes JSON instead of serializing.
Trying to encode the dictionary directly without converting to string.
2fill in blank
medium

Complete the code to deserialize a JSON string retrieved from Redis back into a Python dictionary.

Redis
import json
import redis
r = redis.Redis()
json_data = r.get('user:1')
data = [1]
Drag options to blanks, or click blank then click option'
Ajson.loads(json_data.decode('utf-8'))
Bjson.loads(json_data)
Cjson.dumps(json_data)
Djson.dumps(json_data.decode('utf-8'))
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to load JSON directly from bytes without decoding.
Using json.dumps instead of json.loads for deserialization.
3fill in blank
hard

Fix the error in the code that tries to store a Python set in Redis by serializing it.

Redis
import json
import redis
r = redis.Redis()
my_set = {1, 2, 3}
r.set('myset', [1])
Drag options to blanks, or click blank then click option'
Astr(my_set)
Bjson.dumps(list(my_set))
Cjson.dumps(my_set)
Dmy_set.encode()
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to serialize the set directly causing an error.
Using str() which is not JSON format.
4fill in blank
hard

Fill both blanks to correctly serialize a nested Python object with a datetime before storing it in Redis.

Redis
import json
import redis
from datetime import datetime
r = redis.Redis()
data = {'event': 'login', 'time': datetime.now()}

class DateTimeEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.[1]()
        return super().default(obj)
r.set('event', json.dumps(data, cls=[2]))
Drag options to blanks, or click blank then click option'
Aisoformat
Btimestamp
CDateTimeEncoder
DDateEncoder
Attempts:
3 left
💡 Hint
Common Mistakes
Using timestamp instead of isoformat which is more readable.
Passing wrong class name to json.dumps.
5fill in blank
hard

Fill all three blanks to deserialize JSON from Redis and convert the datetime string back to a datetime object.

Redis
import json
import redis
from datetime import datetime
r = redis.Redis()
json_str = r.get('event').decode('utf-8')

def datetime_parser(dct):
    for k, v in dct.items():
        if k == '[1]':
            dct[k] = datetime.[2](v)
    return dct

data = json.loads(json_str, object_hook=[3])
Drag options to blanks, or click blank then click option'
Atime
Bfromisoformat
Cdatetime_parser
Disoformat
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong key name in the parser function.
Not passing the parser function to json.loads.
Using isoformat instead of fromisoformat for parsing.

Practice

(1/5)
1. What is the main reason to use serialization when storing data in Redis?
easy
A. To convert complex data into a string format that Redis can store
B. To speed up Redis server performance
C. To encrypt data for security
D. To compress data to save disk space

Solution

  1. Step 1: Understand Redis data storage

    Redis stores data as strings or simple types, so complex data like objects or lists must be converted.
  2. Step 2: Role of serialization

    Serialization converts complex data into a string format that Redis can store and later retrieve.
  3. Final Answer:

    To convert complex data into a string format that Redis can store -> Option A
  4. Quick Check:

    Serialization = convert complex data to string [OK]
Hint: Serialization means turning data into strings for Redis storage [OK]
Common Mistakes:
  • Confusing serialization with encryption
  • Thinking Redis stores complex objects natively
  • Assuming serialization compresses data
2. Which of the following is a correct way to serialize a Python dictionary before storing it in Redis?
easy
A. pickle.load(my_dict)
B. str(my_dict)
C. json.loads(my_dict)
D. json.dumps(my_dict)

Solution

  1. Step 1: Identify serialization function

    json.dumps() converts a Python dictionary into a JSON string, suitable for Redis storage.
  2. Step 2: Check other options

    str() converts to string but not a proper serialization format; pickle.load() is for deserialization; json.loads() is for deserialization.
  3. Final Answer:

    json.dumps(my_dict) -> Option D
  4. Quick Check:

    Serialize dict with json.dumps() [OK]
Hint: Use json.dumps() to serialize dicts before Redis storage [OK]
Common Mistakes:
  • Using json.loads() instead of dumps for serialization
  • Using pickle.load() which is for loading, not saving
  • Using str() which is not a proper serialization
3. Given the following Python code storing and retrieving data from Redis:
import redis
import json
r = redis.Redis()
data = {'name': 'Alice', 'age': 30}
r.set('user:1', json.dumps(data))
retrieved = r.get('user:1')
result = json.loads(retrieved.decode())
What will be the value of result?
medium
A. {'name': 'Alice', 'age': 30}
B. b'{"name": "Alice", "age": 30}'
C. '{"name": "Alice", "age": 30}'
D. None

Solution

  1. Step 1: Understand data storage

    json.dumps(data) converts the dictionary to a JSON string, which is stored as bytes in Redis.
  2. Step 2: Understand data retrieval and deserialization

    r.get returns bytes, which are decoded to a string, and json.loads converts the JSON string back to Python dict.
  3. Final Answer:

    {'name': 'Alice', 'age': 30} -> Option A
  4. Quick Check:

    json.loads(r.get().decode()) returns original dict [OK]
Hint: Deserialize Redis bytes with json.loads(r.get().decode()) to get original dict [OK]
Common Mistakes:
  • Forgetting to deserialize after get()
  • Expecting get() to return a dict directly
  • Confusing bytes with string
4. You wrote this code to store a list in Redis:
import redis
import json
r = redis.Redis()
my_list = [1, 2, 3]
r.set('numbers', my_list)
But it raises a TypeError. What is the problem?
medium
A. Redis cannot store lists at all
B. json.dumps() is missing to serialize the list
C. Redis set() expects a string or bytes, not a list
D. The key 'numbers' is invalid

Solution

  1. Step 1: Check Redis set() input type

    Redis set() requires a string or bytes value, not a Python list directly.
  2. Step 2: Identify missing serialization

    To store a list, it must be serialized (e.g., with json.dumps) before set().
  3. Final Answer:

    Redis set() expects a string or bytes, not a list -> Option C
  4. Quick Check:

    set() needs string/bytes, not list [OK]
Hint: Always serialize non-string data before Redis set() [OK]
Common Mistakes:
  • Assuming Redis stores Python lists natively
  • Forgetting to serialize data before storing
  • Blaming Redis key format instead of value type
5. You want to store a complex nested Python dictionary in Redis and retrieve it later with all data intact. Which approach is best?
hard
A. Store the dictionary directly using r.set without serialization
B. Serialize with pickle.dumps before storing, then pickle.loads after retrieving
C. Serialize with JSON using json.dumps before storing, then json.loads after retrieving
D. Convert dictionary to string with str() before storing, then eval() after retrieving

Solution

  1. Step 1: Consider serialization formats for complex data

    JSON handles many types but cannot serialize all Python objects (e.g., tuples, sets).
  2. Step 2: Pickle supports complex Python objects

    pickle.dumps can serialize almost any Python object, preserving structure and types.
  3. Step 3: Evaluate other options

    Storing directly fails; str()/eval() is unsafe and error-prone; JSON may lose some data types.
  4. Final Answer:

    Serialize with pickle.dumps before storing, then pickle.loads after retrieving -> Option B
  5. Quick Check:

    Pickle handles complex Python objects best [OK]
Hint: Use pickle for complex Python objects, JSON for simple data [OK]
Common Mistakes:
  • Using JSON for data with unsupported types
  • Storing data without serialization
  • Using eval() which is insecure
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