Bird
Raised Fist0
Redisquery~5 mins

WATCH for optimistic locking in Redis - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the WATCH command do in Redis?
The WATCH command monitors one or more keys for changes. If any watched key changes before the transaction executes, the transaction is aborted to avoid conflicts.
Click to reveal answer
intermediate
Explain optimistic locking in Redis using WATCH.
Optimistic locking assumes no conflicts will happen. Redis uses WATCH to monitor keys. If keys change before EXEC, the transaction fails, so you can retry safely.
Click to reveal answer
beginner
What happens if a watched key is modified before EXEC in Redis?
The transaction is aborted and EXEC returns null. This prevents conflicting updates and ensures data consistency.
Click to reveal answer
intermediate
How do you retry a transaction after a WATCH aborts in Redis?
You can retry by re-watching the keys and re-executing the transaction commands in a loop until EXEC succeeds.
Click to reveal answer
advanced
Why is WATCH considered optimistic locking instead of pessimistic locking?
Because it does not lock keys upfront. It only checks for changes at commit time, assuming conflicts are rare and handling them if they occur.
Click to reveal answer
What does Redis do if a key watched by WATCH changes before EXEC?
AAutomatically retries the transaction
BLocks the key until transaction finishes
CIgnores the change and commits anyway
DAborts the transaction and returns null
Which Redis command is used to start monitoring keys for optimistic locking?
AEXEC
BWATCH
CMULTI
DDISCARD
What is the purpose of optimistic locking in Redis?
ATo detect conflicts only at commit time
BTo lock keys before any changes
CTo prevent any concurrent access
DTo automatically merge conflicting changes
Which command executes all commands in a Redis transaction after WATCH?
AEXEC
BMULTI
CWATCH
DDISCARD
If a Redis transaction fails due to WATCH, what should you do next?
AUse <code>DISCARD</code> to force commit
BIgnore and continue without retry
CRetry the transaction after re-watching keys
DDelete the keys and try again
Describe how Redis uses the WATCH command to implement optimistic locking.
Think about how Redis checks for conflicts only at commit time.
You got /4 concepts.
    Explain the difference between optimistic locking with WATCH and pessimistic locking.
    Focus on when locking happens and how conflicts are handled.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the WATCH command in Redis optimistic locking?
      easy
      A. To monitor keys for changes before executing a transaction
      B. To lock keys permanently for exclusive access
      C. To delete keys automatically after a timeout
      D. To create backups of keys before modification

      Solution

      1. Step 1: Understand the role of WATCH in Redis

        WATCH is used to monitor keys for any changes before a transaction starts.
      2. Step 2: Identify what happens if keys change

        If any watched key changes before EXEC, the transaction is canceled to avoid conflicts.
      3. Final Answer:

        To monitor keys for changes before executing a transaction -> Option A
      4. Quick Check:

        WATCH detects key changes before transaction [OK]
      Hint: WATCH checks keys before transaction to avoid conflicts [OK]
      Common Mistakes:
      • Thinking WATCH locks keys permanently
      • Assuming WATCH deletes keys
      • Believing WATCH creates backups
      2. Which of the following is the correct sequence of Redis commands to safely update a key counter using optimistic locking?
      easy
      A. MULTI, WATCH counter, INCR counter, EXEC
      B. WATCH counter, MULTI, INCR counter, EXEC
      C. WATCH counter, INCR counter, MULTI, EXEC
      D. INCR counter, WATCH counter, MULTI, EXEC

      Solution

      1. Step 1: Identify correct order for optimistic locking

        You must first WATCH the key to monitor changes, then start MULTI for transaction.
      2. Step 2: Confirm command order

        The correct order is WATCH counter, then MULTI, then commands like INCR, finally EXEC.
      3. Final Answer:

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

        WATCH before MULTI for optimistic locking [OK]
      Hint: Always WATCH before MULTI to start transaction safely [OK]
      Common Mistakes:
      • Starting MULTI before WATCH
      • Running commands before MULTI
      • Not using EXEC at the end
      3. Consider this Redis transaction sequence:
      WATCH balance
      MULTI
      INCR balance
      EXEC

      If another client modifies balance after WATCH but before EXEC, what will be the result of EXEC?
      medium
      A. EXEC will fail and return null
      B. EXEC will succeed and increment balance
      C. EXEC will throw a syntax error
      D. EXEC will retry automatically

      Solution

      1. Step 1: Understand WATCH behavior on key change

        If a watched key changes before EXEC, the transaction is aborted to prevent conflicts.
      2. Step 2: Identify EXEC result when aborting

        When aborted, EXEC returns null (or nil) indicating the transaction did not run.
      3. Final Answer:

        EXEC will fail and return null -> Option A
      4. Quick Check:

        Key changed after WATCH causes EXEC to return null [OK]
      Hint: If watched key changes, EXEC returns null, no update done [OK]
      Common Mistakes:
      • Assuming EXEC still increments key
      • Expecting syntax error on EXEC
      • Thinking EXEC retries automatically
      4. You wrote this Redis code:
      WATCH stock
      MULTI
      DECR stock
      EXEC

      But sometimes the stock count is not decremented even though no errors occur. What is the most likely cause?
      medium
      A. EXEC command was missing
      B. The DECR command syntax is incorrect
      C. The stock key was modified by another client after WATCH
      D. WATCH does not support DECR command

      Solution

      1. Step 1: Analyze why stock is not decremented

        If another client changes the watched key after WATCH, EXEC aborts the transaction silently.
      2. Step 2: Confirm command correctness

        DECR syntax is correct and EXEC is present, so no syntax errors.
      3. Final Answer:

        The stock key was modified by another client after WATCH -> Option C
      4. Quick Check:

        Concurrent key change aborts transaction silently [OK]
      Hint: Concurrent changes abort EXEC silently, no decrement done [OK]
      Common Mistakes:
      • Blaming DECR syntax
      • Forgetting EXEC command
      • Thinking WATCH blocks commands
      5. You want to safely increment a shared counter only if it is less than 10 using Redis optimistic locking. Which code snippet correctly implements this logic?
      hard
      A. WATCH counter if val < 10: val = GET counter MULTI INCR counter EXEC
      B. MULTI WATCH counter val = GET counter if val < 10: INCR counter EXEC
      C. WATCH counter MULTI val = GET counter if val < 10: INCR counter EXEC
      D. WATCH counter val = GET counter MULTI if val < 10: INCR counter EXEC

      Solution

      1. Step 1: Understand optimistic locking with conditional logic

        You must WATCH the key, then GET its value before starting MULTI to ensure value is current.
      2. Step 2: Confirm correct command order

        WATCH first, then GET value, then MULTI, then conditionally INCR, finally EXEC.
      3. Final Answer:

        WATCH counter val = GET counter MULTI if val < 10: INCR counter EXEC -> Option D
      4. Quick Check:

        GET before MULTI after WATCH ensures correct conditional update [OK]
      Hint: GET value after WATCH but before MULTI for safe conditional update [OK]
      Common Mistakes:
      • Starting MULTI before GET
      • Getting value after MULTI
      • Not watching key before GET
      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