Bird
Raised Fist0
Redisquery~10 mins

EXPIRE and TTL for time-to-live in Redis - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - EXPIRE and TTL for time-to-live
Set Key with Value
↓
Apply EXPIRE with seconds
↓
Key has TTL countdown
↓
Check TTL with TTL command
↓
If TTL > 0
→Key exists
No↓
TTL expired
→Key deleted
This flow shows how a key is set, given a time-to-live (TTL) with EXPIRE, and how TTL counts down until the key is deleted.
Execution Sample
Redis
SET session:user123 "active"
EXPIRE session:user123 5
TTL session:user123
(wait 6 seconds)
TTL session:user123
Set a key, apply a 5-second expiration, check TTL before and after expiration.
Execution Table
StepCommandActionTTL Value (seconds)Key Exists?
1SET session:user123 "active"Key set with valueNo TTL (persistent)Yes
2EXPIRE session:user123 5TTL set to 5 seconds5Yes
3TTL session:user123 (immediately)Check TTL5Yes
4(wait 6 seconds)Time passes, TTL counts down0 (expired)No
5TTL session:user123 (after wait)Check TTL after expiration-2 (key does not exist)No
💡 Key expires after 5 seconds, TTL becomes -2 indicating key no longer exists.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 4Final
session:user123 (exists)NoYesYesNoNo
TTL (seconds)N/ANo TTL50 (expired)-2 (no key)
Key Moments - 3 Insights
Why does TTL return -2 after the key expires?
TTL returns -2 when the key does not exist anymore, as shown in step 5 of the execution_table.
Does setting EXPIRE immediately delete the key?
No, EXPIRE sets a countdown. The key remains until TTL reaches zero, as seen between steps 2 and 4.
What happens if you check TTL before setting EXPIRE?
TTL returns -1 meaning the key exists but has no expiration, similar to step 1 where no TTL is set.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the TTL value immediately after setting EXPIRE?
A-1
B0
C5
D-2
💡 Hint
Check step 2 and 3 in the execution_table for TTL values after EXPIRE command.
At which step does the key stop existing?
AStep 3
BStep 4
CStep 2
DStep 1
💡 Hint
Look at the 'Key Exists?' column in the execution_table to find when it changes to 'No'.
If you do not set EXPIRE, what TTL value will TTL command return?
A-1
B0
C-2
D5
💡 Hint
Refer to the variable_tracker and key_moments about TTL values when no expiration is set.
Concept Snapshot
EXPIRE key seconds - sets time-to-live for a key
TTL key - shows remaining seconds before expiration
TTL returns -1 if no expiration set
TTL returns -2 if key does not exist
Key is deleted automatically when TTL reaches zero
Full Transcript
This visual execution shows how Redis EXPIRE sets a time-to-live on a key. First, a key is set with SET. Then EXPIRE sets a countdown in seconds. TTL command checks how many seconds remain. When TTL reaches zero, the key is deleted. TTL returns -1 if the key has no expiration and -2 if the key does not exist. This helps manage temporary data automatically.

Practice

(1/5)
1. What does the Redis command EXPIRE key 60 do?
easy
A. Returns the remaining time to live for the key.
B. Immediately deletes the key named 'key'.
C. Sets the key to expire and be deleted after 60 seconds.
D. Renames the key to '60'.

Solution

  1. Step 1: Understand the EXPIRE command

    The EXPIRE command sets a countdown timer on a key in seconds.
  2. Step 2: Apply the command to the example

    Here, EXPIRE key 60 sets the key to expire after 60 seconds.
  3. Final Answer:

    Sets the key to expire and be deleted after 60 seconds. -> Option C
  4. Quick Check:

    EXPIRE sets countdown = A [OK]
Hint: EXPIRE sets time in seconds before deletion [OK]
Common Mistakes:
  • Thinking EXPIRE deletes immediately
  • Confusing EXPIRE with TTL command
  • Assuming EXPIRE renames keys
2. Which of the following is the correct syntax to check the remaining time to live of a key named session in Redis?
easy
A. TTL session
B. EXPIRE session
C. GETTTL session
D. TIMELEFT session

Solution

  1. Step 1: Identify the command to check TTL

    The Redis command to check remaining time is TTL key.
  2. Step 2: Match the syntax with the key name

    For key session, the correct command is TTL session.
  3. Final Answer:

    TTL session -> Option A
  4. Quick Check:

    TTL command syntax = D [OK]
Hint: TTL shows remaining seconds before expiry [OK]
Common Mistakes:
  • Using EXPIRE to check TTL
  • Assuming GETTTL is a Redis command
  • Using TIMELEFT which does not exist
3. Consider the following Redis commands executed in order:
SET temp "data"
EXPIRE temp 10
TTL temp

What will the TTL temp command return immediately after setting the expire?
medium
A. Error
B. -1
C. 0
D. 10

Solution

  1. Step 1: Set key and expire time

    The key temp is set with value "data" and an expire time of 10 seconds.
  2. Step 2: Check TTL immediately after EXPIRE

    Immediately after setting expire, TTL returns the remaining seconds, which is 10.
  3. Final Answer:

    10 -> Option D
  4. Quick Check:

    TTL after EXPIRE = 10 [OK]
Hint: TTL returns seconds left right after EXPIRE [OK]
Common Mistakes:
  • Expecting TTL to return -1 (no expire)
  • Thinking TTL returns 0 immediately
  • Assuming TTL causes an error if key exists
4. You run the following commands:
SET user "Alice"
EXPIRE user -5
TTL user

What is the result of TTL user and why?
medium
A. -2 because key is deleted immediately
B. Error due to invalid expire time
C. -1 because negative expire removes expiration
D. 5 because negative is treated as positive

Solution

  1. Step 1: Understand EXPIRE with negative time

    Setting EXPIRE with a negative value deletes the key immediately.
  2. Step 2: Check TTL after immediate deletion

    TTL returns -2 when the key does not exist.
  3. Final Answer:

    -2 because key is deleted immediately -> Option A
  4. Quick Check:

    Negative EXPIRE deletes key, TTL = -2 [OK]
Hint: Negative EXPIRE deletes key, TTL returns -2 [OK]
Common Mistakes:
  • Thinking negative expire removes expiration but keeps key
  • Expecting TTL to return -1 for no expire
  • Assuming negative expire causes error
5. You want to set a key cache with a value and ensure it expires in 30 seconds only if it does not already have an expiration. Which Redis command sequence achieves this safely?
hard
A. SET cache "value" NX EX 30
B. SET cache "value" TTL cache EXPIRE cache 30 if TTL is -1
C. SET cache "value" EX 30 EXPIRE cache 30
D. SET cache "value" EXPIRE cache 30

Solution

  1. Step 1: Understand the requirement

    We want to set the key and only add expiration if none exists (TTL = -1).
  2. Step 2: Analyze options

    SET cache "value" TTL cache EXPIRE cache 30 if TTL is -1 checks TTL first, then sets EXPIRE only if TTL is -1, ensuring no overwrite of existing expiration.
  3. Final Answer:

    SET cache "value" TTL cache EXPIRE cache 30 if TTL is -1 -> Option B
  4. Quick Check:

    Check TTL before EXPIRE to avoid overwriting [OK]
Hint: Check TTL before EXPIRE to avoid overwriting [OK]
Common Mistakes:
  • Using NX option which only affects key existence
  • Setting EXPIRE twice unnecessarily
  • Not checking TTL before setting EXPIRE
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