Bird
Raised Fist0
Redisquery~10 mins

EXEC to execute in Redis - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - EXEC to execute
Start Transaction with MULTI
↓
Queue Commands
↓
Call EXEC
↓
Execute All Queued Commands
↓
Return Array of Results
↓
End
This flow shows how Redis queues commands after MULTI and executes them all at once when EXEC is called.
Execution Sample
Redis
MULTI
SET key1 "Hello"
INCR counter
EXEC
This code starts a transaction, queues two commands, then executes them together returning their results.
Execution Table
StepCommandActionResultNotes
1MULTIStart transaction modeOKCommands will be queued, not executed immediately
2SET key1 "Hello"Queue commandQUEUEDCommand added to transaction queue
3INCR counterQueue commandQUEUEDCommand added to transaction queue
4EXECExecute all queued commands["OK", 1]Returns results of SET and INCR commands
5-Transaction ends-All commands executed atomically
💡 EXEC runs all queued commands and returns their results, ending the transaction
Variable Tracker
VariableStartAfter MULTIAfter SET queuedAfter INCR queuedAfter EXECFinal
transaction_modeoffonononoffoff
command_queueemptyempty[SET key1 "Hello"][SET key1 "Hello", INCR counter]emptyempty
key1nilnilnilnil"Hello""Hello"
counternilnilnilnil11
Key Moments - 3 Insights
Why don't the SET and INCR commands run immediately after MULTI?
Because after MULTI, commands are queued and not executed until EXEC is called, as shown in execution_table rows 2 and 3 where commands return QUEUED.
What does EXEC return after running the queued commands?
EXEC returns an array with the results of each command in order, as seen in execution_table row 4 returning ["OK", 1].
What happens to the transaction mode after EXEC?
Transaction mode ends and command queue clears, shown in variable_tracker where transaction_mode goes from 'on' to 'off' and command_queue becomes empty after EXEC.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result of the INCR command after EXEC?
AOK
BQUEUED
C1
Dnil
💡 Hint
Check the EXEC step in execution_table row 4 where the results array shows the INCR command result as 1.
At which step does the transaction mode turn off?
AAfter MULTI
BAfter EXEC
CAfter SET command
DAfter INCR command
💡 Hint
Look at variable_tracker for transaction_mode changes; it turns off after EXEC.
If you add another command after EXEC without MULTI, what happens?
AIt executes immediately
BIt queues the command
CIt returns an error
DIt ignores the command
💡 Hint
Recall that transaction_mode is off after EXEC, so commands run immediately, not queued.
Concept Snapshot
MULTI starts a transaction, queuing commands.
Commands return QUEUED until EXEC.
EXEC runs all queued commands atomically.
EXEC returns an array of results.
Transaction ends after EXEC.
Full Transcript
In Redis, the EXEC command executes all commands queued after MULTI. When you start a transaction with MULTI, commands like SET or INCR are not run immediately but queued. Each queued command returns QUEUED. When EXEC is called, Redis runs all queued commands in order and returns their results as an array. After EXEC, the transaction mode ends and commands run normally again. This ensures atomic execution of multiple commands.

Practice

(1/5)
1. What does the EXEC command do in Redis transactions?
easy
A. It runs all queued commands in a transaction at once.
B. It starts queuing commands for a transaction.
C. It cancels all queued commands in a transaction.
D. It checks the status of the Redis server.

Solution

  1. Step 1: Understand Redis transaction commands

    The MULTI command starts queuing commands, and EXEC runs them all together.
  2. Step 2: Identify the role of EXEC

    EXEC executes all commands queued after MULTI in one atomic operation.
  3. Final Answer:

    It runs all queued commands in a transaction at once. -> Option A
  4. Quick Check:

    EXEC runs queued commands = B [OK]
Hint: Remember: MULTI queues, EXEC runs all queued commands [OK]
Common Mistakes:
  • Confusing EXEC with MULTI
  • Thinking EXEC cancels commands
  • Assuming EXEC checks server status
2. Which of the following is the correct sequence to run multiple commands atomically in Redis?
easy
A. SET key value, EXEC, MULTI
B. EXEC, MULTI, SET key value
C. MULTI, SET key value, EXEC
D. SET key value, MULTI, EXEC

Solution

  1. Step 1: Recall the transaction command order

    First, MULTI starts the transaction, then commands like SET queue, and finally EXEC runs them.
  2. Step 2: Match the correct order

    MULTI, SET key value, EXEC follows this order: MULTI, then SET, then EXEC.
  3. Final Answer:

    MULTI, SET key value, EXEC -> Option C
  4. Quick Check:

    Start with MULTI, end with EXEC = A [OK]
Hint: MULTI starts, EXEC ends the transaction [OK]
Common Mistakes:
  • Putting EXEC before MULTI
  • Running SET before MULTI
  • Mixing command order
3. Given the following Redis commands executed in order:
MULTI
SET user:1:name "Alice"
INCR user:1:visits
EXEC
What will be the result of the EXEC command?
medium
A. An error because INCR on a string key
B. ["OK", 1]
C. ["QUEUED", "QUEUED"]
D. Empty array []

Solution

  1. Step 1: Analyze queued commands

    SET user:1:name "Alice" sets a string key, returns "OK"; INCR user:1:visits increments a numeric key, returns the new value.
  2. Step 2: Understand EXEC output

    EXEC returns an array with results of each command: ["OK", 1].
  3. Final Answer:

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

    EXEC returns results array = C [OK]
Hint: EXEC returns results of all queued commands in order [OK]
Common Mistakes:
  • Expecting QUEUED responses from EXEC
  • Thinking INCR causes error on string key
  • Assuming EXEC returns empty array
4. You run the following Redis commands:
MULTI
SET key1 "value1"
GET key1
EXEC
What will be the result of the EXEC command?
medium
A. An error because GET command is not allowed inside MULTI block
B. You forgot to call MULTI before queuing commands
C. The GET command returns QUEUED, causing EXEC to fail
D. No error; EXEC always succeeds if MULTI was called

Solution

  1. Step 1: Understand command behavior in transactions

    Some commands like GET are allowed but return QUEUED during MULTI, and EXEC returns their results after execution.
  2. Step 2: Identify that no error occurs

    GET is fully supported inside MULTI/EXEC blocks, so EXEC succeeds and returns ["OK", "value1"].
  3. Final Answer:

    No error; EXEC always succeeds if MULTI was called -> Option D
  4. Quick Check:

    GET inside MULTI causes no error = D [OK]
Hint: Check if commands are allowed inside MULTI before EXEC [OK]
Common Mistakes:
  • Assuming all commands work inside MULTI
  • Forgetting to call MULTI before EXEC
  • Expecting EXEC to never fail
5. You want to increment a counter atomically with optimistic locking (aborting if the key was modified meanwhile), using Redis transactions. Which sequence correctly uses WATCH, MULTI, and EXEC to do this safely?
hard
A.
WATCH counter
MULTI
INCR counter
EXEC
B.
MULTI
WATCH counter
INCR counter
EXEC
C.
MULTI
INCR counter
EXEC
WATCH counter
D.
INCR counter
WATCH counter
MULTI
EXEC

Solution

  1. Step 1: Understand WATCH usage

    WATCH monitors keys for changes before starting a transaction with MULTI.
  2. Step 2: Correct command order for safe increment

    First WATCH counter, then MULTI, queue INCR counter, and finally EXEC to run if no changes occurred.
  3. Final Answer:

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

    WATCH before MULTI for safe transactions = D [OK]
Hint: Always WATCH keys before MULTI to ensure safe EXEC [OK]
Common Mistakes:
  • Calling WATCH after MULTI
  • Running INCR before WATCH
  • Not using WATCH for conditional updates
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