Bird
Raised Fist0
Redisquery~5 mins

Transaction execution model in Redis

Choose your learning style10 modes available
Introduction

Transactions let you run multiple commands together as one group. This helps keep your data safe and consistent.

When you want to update several keys at once without interruption.
When you need to make sure all commands succeed or none do.
When you want to avoid other clients changing data while you work.
When you want to group commands to run in order without interference.
Syntax
Redis
MULTI
COMMAND1
COMMAND2
...
EXEC

MULTI starts the transaction.

EXEC runs all queued commands together.

Examples
This sets two keys together as one transaction.
Redis
MULTI
SET key1 value1
SET key2 value2
EXEC
This increments a counter twice in one transaction.
Redis
MULTI
INCR counter
INCR counter
EXEC
Sample Program

This transaction sets two fields for user 1 together.

Redis
MULTI
SET user:1:name Alice
SET user:1:age 30
EXEC
OutputSuccess
Important Notes

Commands inside MULTI are queued and only run when EXEC is called.

If any command fails, EXEC still runs all commands; Redis does not rollback.

Use WATCH before MULTI to monitor keys and abort if they change.

Summary

Transactions group commands to run together safely.

Use MULTI to start and EXEC to run the commands.

Redis transactions do not rollback on errors automatically.

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