0
votes

I'm going through the tutorial on redis and came across a command that didn't make sense. From my code below, I'm getting a -2 time-to-live return value for a key that definitely does still exist. Shouldn't my code have returned a -1 for never expiring?

The tutorial says:

Redis can be told that a key should only exist for a certain length of time. This is accomplished with the EXPIRE and TTL commands.

SET resource:lock "Redis Demo" EXPIRE resource:lock 120

This causes the key resource:lock to be deleted in 120 seconds. You can test how long a key will exist with the TTL command. It returns the number of seconds until it will be deleted.

TTL resource:lock => 113 // after 113s TTL resource:lock => -2

The -2 for the TTL of the key means that the key does not exist (anymore). A -1 for the TTL of the key means that it will never expire. Note that if you SET a key, its TTL will be reset.

SET resource:lock "Redis Demo 1"
EXPIRE resource:lock 120
TTL resource:lock => 119
SET resource:lock "Redis Demo 2"
TTL resource:lock => -1

This is the code that I typed into the interactive terminal. My assumption is that the 3rd line should've given me back -1, for never expiring. I never set an expiration time so I don't know why I'm getting back -2.

> SET loggedIn "True"  
OK 
> TTL logggedIn   
(integer) -2  
> GET loggedIn  
"True"
1

1 Answers

0
votes

You have a spelling error: you set a key named loggedIn, while trying to get the TTL of logggedIn