Dragonfly Cloud is now available on the AWS Marketplace - Learn More

Getting Default TTL in Redis Using Python (Detailed Guide w/ Code Examples)

Use Case(s)

In Redis, TTL (Time To Live) is used to set an expiry time on keys. You might want to get the default TTL of a key if you are managing session cookies or caching data and need to know the preset expiration timeline.

Code Examples

Example 1: Getting TTL of a Key

Here's how you can get the TTL of a key using python's redis library:

import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('my_key', 'my_value', ex=10) ttl = r.ttl('my_key') print(ttl) # outputs: 10

In this example, we first connect to the Redis server. Then, we set a key my_key with value my_value and an expiration time of 10 seconds. r.ttl('my_key') is used to get the TTL of my_key. The print statement will output 10.

Example 2: Handling Non-Existent Keys or Keys Without TTL

When a key does not exist or doesn't have a TTL, the ttl function will return None.

import redis r = redis.Redis(host='localhost', port=6379, db=0) ttl = r.ttl('non_existent_key') print(ttl) # outputs: None

In this example, since there's no key named 'non_existent_key', the ttl function will return None.

Best Practices

  1. Be sure to handle the case where the TTL can return None - when a key does not exist or doesn't have an expiration time set.
  2. Avoid setting a very short TTL for keys that are frequently accessed and rarely changed, as it could lead to unnecessary overhead of setting the same key-value pair repeatedly.

Common Mistakes

  1. Using ttl on a key without checking if it exists or not can lead to Null Pointer Exceptions.
  2. Misunderstanding that ttl returns time in seconds. Remember, it can return -1 if the key exists but has no associated expire.

FAQs

Q: What happens if I use ttl on a key that never expires?

A: If the key exists but does not have an expiration set, ttl will return -1.

Was this content helpful?

Switch & save up to 80% 

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement. Instantly experience up to a 25X boost in performance and 80% reduction in cost