Bird
Raised Fist0
Redisquery~30 mins

Transaction execution model in Redis - Mini Project: Build & Apply

Choose your learning style10 modes available
Redis Transaction Execution Model
📖 Scenario: You are managing a simple Redis database for a small online store. You want to ensure that multiple commands that update the stock and sales count happen together without interference from other operations.
🎯 Goal: Build a Redis transaction that safely updates the stock and sales count for a product in one atomic operation.
📋 What You'll Learn
Create a Redis key for product stock with an initial value
Create a Redis key for product sales count with an initial value
Start a Redis transaction using MULTI
Queue commands to decrement stock and increment sales count
Execute the transaction with EXEC
💡 Why This Matters
🌍 Real World
Redis transactions help ensure that multiple related updates happen together without interference, which is important in inventory and sales systems.
💼 Career
Understanding Redis transactions is useful for backend developers and database administrators working with real-time data and caching systems.
Progress0 / 4 steps
1
Set initial product stock and sales count
Create two Redis keys: product_stock with value 100 and product_sales with value 0 using the SET command.
Redis
Hint

Use SET command to assign values to keys.

2
Start the transaction
Start a Redis transaction by writing the MULTI command.
Redis
Hint

Use MULTI to begin a transaction block.

3
Queue stock decrement and sales increment commands
Inside the transaction, queue the commands DECR product_stock to reduce stock by 1 and INCR product_sales to increase sales count by 1.
Redis
Hint

Use DECR and INCR commands to queue changes inside the transaction.

4
Execute the transaction
Complete the transaction by writing the EXEC command to execute all queued commands atomically.
Redis
Hint

Use EXEC to run all commands queued in the transaction.

Practice

(1/5)
1. What is the purpose of the MULTI command in Redis transactions?
easy
A. To discard all queued commands in a transaction
B. To immediately execute all queued commands
C. To start a transaction and queue commands for atomic execution
D. To check the status of the current transaction

Solution

  1. Step 1: Understand the role of MULTI

    The MULTI command starts a transaction and queues subsequent commands instead of executing them immediately.
  2. Step 2: Differentiate MULTI from other commands

    EXEC runs the queued commands, DISCARD cancels them, and no command checks status directly.
  3. Final Answer:

    To start a transaction and queue commands for atomic execution -> Option C
  4. Quick Check:

    MULTI = start transaction [OK]
Hint: MULTI always starts queuing commands, not executing them [OK]
Common Mistakes:
  • Confusing MULTI with EXEC
  • Thinking MULTI executes commands immediately
  • Assuming MULTI discards commands
2. Which of the following is the correct sequence to execute a Redis transaction?
easy
A. EXEC, MULTI, commands
B. commands, MULTI, EXEC
C. commands, EXEC, MULTI
D. MULTI, commands, EXEC

Solution

  1. Step 1: Recall the transaction command order

    First, MULTI starts the transaction, then commands are queued, and finally EXEC runs them.
  2. Step 2: Verify the sequence

    Only MULTI, commands, EXEC follows the correct order: MULTI, then commands, then EXEC.
  3. Final Answer:

    MULTI, commands, EXEC -> Option D
  4. Quick Check:

    Order = MULTI -> commands -> EXEC [OK]
Hint: MULTI starts, EXEC ends transaction execution [OK]
Common Mistakes:
  • Starting with EXEC instead of MULTI
  • Running commands before MULTI
  • Mixing order of commands and EXEC
3. Consider the following Redis transaction commands:
MULTI
SET key1 value1
INCR counter
EXEC
What will be the result of the EXEC command if counter does not exist before the transaction?
medium
A. ["OK", "(error) counter is not an integer"]
B. ["OK", 1]
C. Syntax error
D. Transaction discarded

Solution

  1. Step 1: Analyze commands in the transaction

    SET key1 value1 sets a string key, and INCR counter increments the counter key. If counter does not exist, Redis treats it as 0 before incrementing.
  2. Step 2: Understand Redis transaction behavior

    Redis queues commands and executes them atomically. Since counter is missing, INCR will create it with value 1. Both commands succeed.
  3. Final Answer:

    ["OK", 1] -> Option B
  4. Quick Check:

    INCR missing key = 1 [OK]
Hint: INCR creates missing keys with value 1 [OK]
Common Mistakes:
  • Expecting error if key is missing
  • Thinking transaction rolls back on error
  • Confusing syntax error with runtime error
4. You run this Redis transaction:
MULTI
SET key1 value1
INCR key1
EXEC
What is the expected outcome and why?
medium
A. EXEC returns an error for INCR because key1 is not an integer
B. Both commands succeed; key1 becomes 'value1' then incremented
C. Transaction is discarded due to type error
D. Only SET executes; INCR is ignored

Solution

  1. Step 1: Examine commands and data types

    SET key1 value1 sets key1 to a string. INCR key1 expects an integer but key1 is a string.
  2. Step 2: Understand Redis transaction error handling

    Redis queues commands and executes all on EXEC. It does not rollback on errors. INCR fails with a type error, but SET succeeds.
  3. Final Answer:

    EXEC returns an error for INCR because key1 is not an integer -> Option A
  4. Quick Check:

    Type error in transaction = error on EXEC [OK]
Hint: Redis transactions don't rollback on command errors [OK]
Common Mistakes:
  • Assuming transaction rolls back on error
  • Expecting INCR to convert string automatically
  • Thinking only first command runs
5. You want to increment a counter only if a key lock does not exist, using Redis transactions. Which sequence correctly ensures atomicity?
hard
A. WATCH lock MULTI INCR counter EXEC
B. MULTI SET lock 1 INCR counter EXEC
C. MULTI INCR counter GET lock EXEC
D. MULTI GET lock INCR counter EXEC

Solution

  1. Step 1: Understand the need for atomic check and increment

    You must check if lock exists and increment counter only if it does not, atomically.
  2. Step 2: Use WATCH to monitor lock

    WATCH lock watches the key for changes. If lock changes before EXEC, the transaction aborts, ensuring atomicity.
  3. Step 3: MULTI queues commands and EXEC runs them if lock unchanged

    This sequence ensures the increment happens only if lock was not modified.
  4. Final Answer:

    WATCH lock MULTI INCR counter EXEC -> Option A
  5. Quick Check:

    WATCH + MULTI = atomic check and update [OK]
Hint: Use WATCH before MULTI to ensure atomic conditional updates [OK]
Common Mistakes:
  • Not using WATCH for conditional logic
  • Checking key inside MULTI without WATCH
  • Assuming MULTI alone ensures atomic condition
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