There are several ways to return a key’s expiry in Redis. The method used depends on how we want the expiry to be returned.
We can use the TTL
command to return the timeout in seconds. We can alternatively use the PTTL
command to return it in milliseconds. Another way to do it is to use the EXPIRETIME
which returns the absolute Unix timestamp of the key in seconds, or the PEXPIRETIME
command which returns the absolute Unix timestamp of the key in milliseconds.
The TTL
Command
Suppose we set the following key with an expiry:
SET lastname "Burr" EX 60
Result:
OK
We can use the TTL
command to check the current time to live of that key:
TTL lastname
Result:
(integer) 54
The PTTL
Command
Here it is using the PTTL
command:
PTTL lastname
Result:
(integer) 26752
The EXPIRETIME
Command
Here it is using the EXPIRETIME
command, which returns the absolute Unix timestamp of the key in seconds:
EXPIRETIME lastname
Result:
(integer) 1657596158
The PEXPIRETIME
Command
Here it is using the PEXPIRETIME
command, which returns the absolute Unix timestamp of the key in milliseconds:
PEXPIRETIME lastname
Result:
(integer) 1657596157971
When the Key has Already Expired
If the key has already expired, or if it doesn’t exist, the above commands return an integer reply of -2
.
Here’s an example of using TTL
on the same key after it has expired:
TTL lastname
Result:
(integer) -2
When the Key has No Expiry
If the key exists but it doesn’t have an associated timeout, the above commands return an integer reply of -1
.
Let’s create the key again, but this time with no expiry:
SET lastname "Burr"
Result:
OK
Now let’s try to find its timeout:
TTL lastname
Result:
(integer) -1
We get an integer reply of -1
as expected.