What does the DISCARD command do in Redis transactions?
It cancels all commands queued in the current transaction and exits the transaction without executing any of them.
Click to reveal answer
beginner
When should you use DISCARD in Redis?
Use DISCARD when you want to abort a transaction because something went wrong or you no longer want to execute the queued commands.
Click to reveal answer
intermediate
What happens if you run DISCARD without starting a transaction with MULTI?
Redis will return an error because DISCARD only works inside a transaction block started by MULTI.
Click to reveal answer
intermediate
How does DISCARD affect the Redis command queue?
It clears the queue of commands that were added after MULTI and before EXEC, so none of those commands run.
Click to reveal answer
beginner
Compare DISCARD and EXEC in Redis transactions.
EXEC runs all queued commands in the transaction, while DISCARD cancels them all without running anything.
Click to reveal answer
What does the Redis DISCARD command do?
AStarts a new transaction
BExecutes all queued commands in a transaction
CCancels all queued commands in a transaction
DCommits changes to the database
✗ Incorrect
DISCARD cancels all commands queued after MULTI and aborts the transaction.
When can you use DISCARD in Redis?
AOnly after <code>EXEC</code>
BOnly after <code>MULTI</code> and before <code>EXEC</code>
CAt any time
DOnly before <code>MULTI</code>
✗ Incorrect
DISCARD works only inside a transaction block, after MULTI and before EXEC.
What happens if you run DISCARD without starting a transaction?
AIt clears the database
BIt does nothing
CIt starts a transaction
DIt returns an error
✗ Incorrect
DISCARD requires a transaction started by MULTI. Without it, Redis returns an error.
Which command in Redis actually runs the queued commands in a transaction?
AEXEC
BMULTI
CDISCARD
DWATCH
✗ Incorrect
EXEC executes all commands queued after MULTI.
If you want to cancel a transaction in Redis, which command should you use?
ADISCARD
BEXEC
CMULTI
DSAVE
✗ Incorrect
DISCARD aborts the transaction and clears the queued commands.
Explain how the DISCARD command works in Redis transactions and when you would use it.
Think about stopping a group of commands before they run.
You got /4 concepts.
Describe the difference between EXEC and DISCARD in Redis transactions.
One means go, the other means stop.
You got /4 concepts.
Practice
(1/5)
1. What does the DISCARD command do in a Redis transaction?
easy
A. It starts a new transaction.
B. It cancels all commands queued in the current transaction.
C. It saves the current database state to disk.
D. It executes all commands queued in the current transaction.
Solution
Step 1: Understand the role of DISCARD in Redis transactions
DISCARD is used to cancel all commands queued after MULTI before EXEC is called.
Step 2: Compare DISCARD with other transaction commands
Unlike EXEC which executes queued commands, DISCARD aborts them, so no changes happen.
Final Answer:
It cancels all commands queued in the current transaction. -> Option B
Quick Check:
DISCARD cancels queued commands = D [OK]
Hint: DISCARD always cancels queued commands without executing them [OK]
Common Mistakes:
Confusing DISCARD with EXEC which executes commands
Thinking DISCARD saves changes instead of aborting
Assuming DISCARD starts a transaction
2. Which of the following is the correct syntax to abort a Redis transaction after MULTI?
easy
A. EXEC
B. ABORT
C. ROLLBACK
D. DISCARD
Solution
Step 1: Recall Redis transaction commands
After MULTI, you can either execute with EXEC or abort with DISCARD.
Step 2: Identify the correct abort command
DISCARD is the official command to abort queued commands; ABORT and ROLLBACK do not exist in Redis.
Final Answer:
DISCARD -> Option D
Quick Check:
Abort command after MULTI = DISCARD [OK]
Hint: Use DISCARD to abort, EXEC to execute queued commands [OK]
Common Mistakes:
Using EXEC instead of DISCARD to abort
Typing ABORT or ROLLBACK which are invalid Redis commands
Confusing DISCARD with starting a transaction
3. Consider the following Redis commands executed in order:
MULTI
SET key1 value1
DISCARD
GET key1
What will be the output of the GET key1 command?
medium
A. nil
B. "value1"
C. Error: EXEC without MULTI
D. "key1"
Solution
Step 1: Analyze the transaction commands
After MULTI, SET key1 value1 is queued but not executed yet.
Step 2: Effect of DISCARD on queued commands
DISCARD aborts the transaction, so SET key1 value1 is never applied.
Step 3: Result of GET key1
Since key1 was never set, GET key1 returns nil.
Final Answer:
nil -> Option A
Quick Check:
DISCARD aborts SET, so GET returns nil [OK]
Hint: DISCARD cancels queued SET, so key remains unset [OK]
Common Mistakes:
Assuming SET runs immediately after MULTI
Expecting EXEC to run automatically without calling it
Confusing output with command names
4. You run the following Redis commands:
MULTI
SET key1 value1
DISCARD
EXEC
What will happen when you run EXEC after DISCARD?
medium
A. EXEC returns nil without error
B. EXEC runs and applies SET key1 value1
C. EXEC returns an error because no transaction is active
D. EXEC starts a new transaction
Solution
Step 1: Understand DISCARD effect on transaction state
DISCARD aborts the transaction and clears the queue, ending the transaction state.
Step 2: Behavior of EXEC after DISCARD
Since no transaction is active after DISCARD, calling EXEC causes an error because EXEC requires an active MULTI block.
Final Answer:
EXEC returns an error because no transaction is active -> Option C
Quick Check:
EXEC after DISCARD errors due to no active transaction [OK]
Hint: After DISCARD, no active transaction; EXEC causes error [OK]
Common Mistakes:
Expecting EXEC to run queued commands after DISCARD
Thinking EXEC silently returns nil after DISCARD
Assuming EXEC starts a new transaction
5. You want to safely update multiple keys in Redis but abort if a condition fails. Which sequence correctly uses DISCARD to abort the transaction if the condition is false?
WATCH key1
MULTI
IF condition IS FALSE
DISCARD
ELSE
SET key1 newValue
SET key2 newValue2
EXEC
END
What is the correct way to use DISCARD here?
hard
A. Call DISCARD immediately after MULTI if condition is false, skipping EXEC.
B. Call DISCARD after EXEC to undo changes if condition is false.
C. Call DISCARD before WATCH to abort the transaction.
D. Call DISCARD after SET commands to cancel them.
Solution
Step 1: Understand transaction flow with WATCH and MULTI
WATCH monitors keys, MULTI starts queuing commands, EXEC executes them.
Step 2: Use DISCARD to abort before EXEC if condition fails
If the condition is false, DISCARD cancels queued commands before EXEC runs, preventing changes.
Step 3: Why other options are incorrect
DISCARD after EXEC or after SET commands is invalid; DISCARD before WATCH does not abort a transaction.
Final Answer:
Call DISCARD immediately after MULTI if condition is false, skipping EXEC. -> Option A
Quick Check:
DISCARD aborts queued commands before EXEC [OK]
Hint: Use DISCARD before EXEC to abort if condition fails [OK]
Common Mistakes:
Calling DISCARD after EXEC which is too late
Trying to DISCARD before WATCH which does nothing
Assuming DISCARD cancels commands after they run
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.