Bird
Raised Fist0
Redisquery~5 mins

SETNX for set-if-not-exists in Redis - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the Redis command SETNX do?

SETNX sets a key to a value only if the key does not already exist in the database.

Click to reveal answer
beginner
What will SETNX mykey "hello" return if mykey already exists?

It will return 0, meaning the key was not set because it already exists.

Click to reveal answer
intermediate
How can SETNX be useful in real-life applications?

It can be used to create locks or ensure a value is set only once, like setting a unique user ID or a one-time token.

Click to reveal answer
beginner
What is the difference between SET and SETNX in Redis?

SET always sets the key to the value, overwriting if it exists. SETNX sets the key only if it does not exist.

Click to reveal answer
beginner
If SETNX returns 1, what does that mean?

It means the key was successfully set because it did not exist before.

Click to reveal answer
What does the Redis command SETNX key value do?
ADeletes the key if it exists
BAlways sets the key to the value
CReturns the current value of the key
DSets the key only if it does not exist
What does SETNX return if the key already exists?
Anull
B1
C0
Derror
Which Redis command would you use to set a key only if it does not exist?
AGET
BSETNX
CSET
DDEL
Why might you use SETNX in a distributed system?
ATo create a lock preventing race conditions
BTo get the value of a key
CTo always overwrite values
DTo delete keys safely
If you want to set a key regardless of its existence, which command should you use?
ASET
BSETNX
CGET
DEXISTS
Explain how the Redis command SETNX works and give an example of when you might use it.
Think about setting a value only once.
You got /3 concepts.
    What is the difference between SET and SETNX in Redis?
    Consider what happens if the key already exists.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the Redis command SETNX do?
      easy
      A. Sets a key only if it does not already exist
      B. Always sets a key, overwriting any existing value
      C. Deletes a key if it exists
      D. Returns the value of a key without changing it

      Solution

      1. Step 1: Understand the purpose of SETNX

        SETNX stands for 'SET if Not eXists'. It sets a key only if the key does not already exist in Redis.
      2. Step 2: Compare with other commands

        Unlike SET, which always sets the key, SETNX avoids overwriting existing keys.
      3. Final Answer:

        Sets a key only if it does not already exist -> Option A
      4. Quick Check:

        SETNX = set-if-not-exists [OK]
      Hint: Remember NX means 'Not eXists' for setting keys [OK]
      Common Mistakes:
      • Thinking SETNX always overwrites keys
      • Confusing SETNX with GET command
      • Assuming SETNX deletes keys
      2. Which of the following is the correct syntax to set key 'user:1' to 'Alice' only if it does not exist using SETNX?
      easy
      A. SETNX user:1 Alice
      B. SET user:1 Alice NX
      C. SETNX 'user:1' 'Alice'
      D. SET user:1 Alice XX

      Solution

      1. Step 1: Recall SETNX syntax

        The correct syntax is SETNX key value without quotes unless the key or value contains spaces.
      2. Step 2: Analyze options

        SETNX user:1 Alice uses correct syntax without quotes, which is valid. SETNX 'user:1' 'Alice' uses quotes which are not required in Redis CLI and may cause errors.
      3. Final Answer:

        SETNX user:1 Alice -> Option A
      4. Quick Check:

        SETNX key value is correct syntax [OK]
      Hint: Use SETNX key value without quotes for simple keys [OK]
      Common Mistakes:
      • Using SET with NX option incorrectly
      • Adding quotes unnecessarily in Redis CLI
      • Using XX option which means 'only set if exists'
      3. Given the following Redis commands executed in order:
      SETNX lock 1
      SETNX lock 2
      What will be the result of the second SETNX command?
      medium
      A. 1
      B. 2
      C. 0
      D. Error

      Solution

      1. Step 1: Execute first SETNX

        The first command SETNX lock 1 sets the key 'lock' to '1' because it does not exist yet. It returns 1 indicating success.
      2. Step 2: Execute second SETNX

        The second command SETNX lock 2 tries to set 'lock' again, but since 'lock' already exists, it does not overwrite and returns 0.
      3. Final Answer:

        0 -> Option C
      4. Quick Check:

        SETNX returns 0 if key exists [OK]
      Hint: SETNX returns 0 if key already exists [OK]
      Common Mistakes:
      • Assuming SETNX overwrites existing keys
      • Expecting the second SETNX to return 1
      • Confusing return values with stored values
      4. You run the command SETNX mykey without a value. What is the expected result?
      medium
      A. Returns 1 and sets mykey to NULL
      B. Syntax error due to missing value
      C. Sets mykey to an empty string
      D. Returns 0 because key exists

      Solution

      1. Step 1: Check command syntax requirements

        SETNX requires exactly two arguments: a key and a value. Omitting the value causes a syntax error.
      2. Step 2: Analyze the command given

        The command SETNX mykey has only one argument after the command name, so Redis will return a syntax error.
      3. Final Answer:

        Syntax error due to missing value -> Option B
      4. Quick Check:

        SETNX needs key and value arguments [OK]
      Hint: Always provide both key and value for SETNX [OK]
      Common Mistakes:
      • Trying to set key without value
      • Assuming missing value defaults to empty string
      • Expecting 0 return instead of error
      5. You want to implement a simple lock using Redis SETNX. Which sequence correctly acquires the lock and handles the case when the lock is already held?
      hard
      A. Use DEL lock before SETNX to ensure lock is free
      B. Use SET lock 1 NX; if returns OK, lock acquired; else delete lock
      C. Use SETNX lock 1; if returns 0, overwrite lock with SET
      D. Use SETNX lock 1; if returns 1, lock acquired; else wait and retry

      Solution

      1. Step 1: Understand lock acquisition with SETNX

        SETNX sets the lock key only if it does not exist, returning 1 if successful, which means lock acquired.
      2. Step 2: Handle lock already held

        If SETNX returns 0, the lock exists, so the client should wait and retry later instead of overwriting or deleting the lock.
      3. Final Answer:

        Use SETNX lock 1; if returns 1, lock acquired; else wait and retry -> Option D
      4. Quick Check:

        SETNX + retry loop is standard lock pattern [OK]
      Hint: SETNX returns 1 means lock acquired; else retry [OK]
      Common Mistakes:
      • Overwriting lock without checking SETNX result
      • Deleting lock blindly before setting
      • Assuming SETNX returns OK instead of 1 or 0
      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