Bird
Raised Fist0
Redisquery~10 mins

Object storage with hashes in Redis - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Object storage with hashes
Start
↓
Create Hash Key
↓
Add Field-Value Pairs
↓
Store Hash in Redis
↓
Retrieve Hash by Key
↓
Access Specific Fields
↓
End
This flow shows how to create a hash key, add field-value pairs, store it in Redis, and retrieve specific fields from the hash.
Execution Sample
Redis
HSET user:1000 name "Alice" age "30" city "NY"
HGET user:1000 name
HGETALL user:1000
Store user data as a hash with fields name, age, city; then retrieve the name and all fields.
Execution Table
StepCommandActionResult
1HSET user:1000 name "Alice" age "30" city "NY"Create hash key 'user:1000' and set fields(integer) 3
2HGET user:1000 nameRetrieve 'name' field from hash 'user:1000'"Alice"
3HGETALL user:1000Retrieve all fields and values from hash 'user:1000'["name", "Alice", "age", "30", "city", "NY"]
4HGET user:1000 countryTry to get non-existing field 'country'(nil)
💡 No more commands; demonstration ends.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4
user:1000 (hash)empty{"name":"Alice", "age":"30", "city":"NY"}{"name":"Alice", "age":"30", "city":"NY"}{"name":"Alice", "age":"30", "city":"NY"}{"name":"Alice", "age":"30", "city":"NY"}
name fieldnoneset to "Alice""Alice""Alice""Alice"
country fieldnonenonenonenonenone (does not exist)
Key Moments - 2 Insights
Why does HGET return nil when asking for a field that does not exist?
Because in step 4 of the execution_table, the field 'country' was never set in the hash 'user:1000', so Redis returns nil to indicate no such field.
Does HSET overwrite existing fields or add new ones?
HSET adds new fields or overwrites existing ones. In step 1, all fields are set fresh. If you run HSET again with the same field, it updates the value.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result of the HGET command at step 2?
A"Alice"
B"30"
Cnil
D["name", "Alice"]
💡 Hint
Check the 'Result' column for step 2 in the execution_table.
At which step does the hash 'user:1000' get created and fields set?
AStep 3
BStep 2
CStep 1
DStep 4
💡 Hint
Look at the 'Action' column to see when the hash key is created.
If you try to get a field that does not exist, what does Redis return according to the execution_table?
AAn empty string
Bnil
CAn error message
DThe whole hash
💡 Hint
See the result of step 4 in the execution_table.
Concept Snapshot
Object storage with hashes in Redis:
- Use HSET key field value [field value ...] to store multiple fields.
- Use HGET key field to get a single field's value.
- Use HGETALL key to get all fields and values.
- Non-existing fields return nil.
- Hashes store related data under one key for easy access.
Full Transcript
This visual execution shows how Redis stores objects using hashes. First, a hash key 'user:1000' is created with fields 'name', 'age', and 'city' using HSET. Then, HGET retrieves the 'name' field, returning 'Alice'. HGETALL returns all fields and values as a list. Trying to get a non-existing field 'country' returns nil. Variables track the hash content and field values step-by-step. Key moments clarify why nil is returned for missing fields and how HSET updates or adds fields. The quiz tests understanding of these steps and results.

Practice

(1/5)
1. What does a Redis hash store?
easy
A. A set of unique keys without duplicates
B. Only a single string value per key
C. A list of keys without values
D. Multiple fields and their values under one key

Solution

  1. Step 1: Understand Redis hash structure

    Redis hashes store multiple field-value pairs grouped under a single key.
  2. Step 2: Compare options with hash definition

    Only Multiple fields and their values under one key correctly describes storing multiple fields and values under one key.
  3. Final Answer:

    Multiple fields and their values under one key -> Option D
  4. Quick Check:

    Hashes = multiple fields + values [OK]
Hint: Hashes group fields and values under one key [OK]
Common Mistakes:
  • Thinking hashes store only one value
  • Confusing hashes with lists or sets
  • Assuming keys are stored without values
2. Which Redis command correctly adds a field 'name' with value 'Alice' to a hash key 'user:1'?
easy
A. HGET user:1 name Alice
B. HSET user:1 name Alice
C. SET user:1 name Alice
D. HMGET user:1 name Alice

Solution

  1. Step 1: Identify command to add/update hash field

    HSET is the Redis command to set a field in a hash.
  2. Step 2: Check command syntax

    HSET key field value is correct; so HSET user:1 name Alice is valid.
  3. Final Answer:

    HSET user:1 name Alice -> Option B
  4. Quick Check:

    HSET adds/updates hash fields [OK]
Hint: Use HSET to add or update hash fields [OK]
Common Mistakes:
  • Using HGET instead of HSET to add data
  • Using SET which is for strings, not hashes
  • Confusing HMGET (retrieves multiple fields) with HSET
3. Given the following Redis commands executed in order:
HSET user:2 age 30
HSET user:2 name Bob
HGETALL user:2
What is the output of HGETALL user:2?
medium
A. ["age", 30, "name", "Bob"]
B. ["user:2", "age", "30", "name", "Bob"]
C. ["age", "30", "name", "Bob"]
D. ["name", "Bob"]

Solution

  1. Step 1: Understand HSET commands

    HSET adds fields 'age' with '30' and 'name' with 'Bob' to hash 'user:2'.
  2. Step 2: Understand HGETALL output format

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

    ["age", "30", "name", "Bob"] -> Option C
  4. Quick Check:

    HGETALL returns all fields and values as string pairs [OK]
Hint: HGETALL returns flat list of field-value strings [OK]
Common Mistakes:
  • Expecting key name in output
  • Mixing data types (number vs string)
  • Only getting one field instead of all
4. You run the command HGET user:3 email but get a null response. What could be the reason?
medium
A. The field 'email' does not exist in the hash 'user:3'
B. The key 'user:3' is a string, not a hash
C. The Redis server is down
D. The command syntax is incorrect

Solution

  1. Step 1: Understand HGET behavior

    HGET returns null if the field does not exist in the hash.
  2. Step 2: Check other options

    Key being a string would cause an error, not null; server down or syntax error would cause different errors.
  3. Final Answer:

    The field 'email' does not exist in the hash 'user:3' -> Option A
  4. Quick Check:

    Missing field in hash returns null [OK]
Hint: Null means field missing, not syntax or server error [OK]
Common Mistakes:
  • Assuming null means server or syntax error
  • Confusing key type errors with missing field
  • Expecting error instead of null for missing field
5. You want to store user profiles with fields 'name', 'age', and 'email' in Redis hashes. Which approach is best to retrieve all user data efficiently?
hard
A. Store each user as a separate hash with key 'user:<id>' and use HGETALL to get all fields
B. Store all users in one hash with fields like 'user1_name', 'user1_age', 'user2_name', etc.
C. Store each field as a separate key like 'name:<id>', 'age:<id>', 'email:<id>'
D. Store user data as JSON strings in simple keys

Solution

  1. Step 1: Analyze storage options

    Storing each user as a separate hash groups related fields logically and allows efficient access.
  2. Step 2: Evaluate retrieval efficiency

    Using HGETALL on 'user:<id>' fetches all fields at once, simpler and faster than scattered keys or complex parsing.
  3. Final Answer:

    Store each user as a separate hash with key 'user:<id>' and use HGETALL to get all fields -> Option A
  4. Quick Check:

    Separate hashes per user = organized and efficient [OK]
Hint: Use one hash per user for grouped fields and easy retrieval [OK]
Common Mistakes:
  • Mixing all users in one hash causing complex keys
  • Using separate keys for each field complicates retrieval
  • Storing JSON loses Redis hash benefits
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