如何在django-redis中扩展缓存ttl(生存时间)?

时间:2014-08-23 14:36:01

标签: django caching redis ttl

我使用的是django 1.5.4和django-redis 3.7.1

我想在检索时扩展缓存的ttl(生存时间)

以下是示例代码

from django.core.cache import cache

foo = cache.get("foo)

if not foo:
    cache.set("foo", 1, timeout=100)
else:
    // Extend Cache's Time-To-Live something like it
    cache.ttl("foo") = 200

我尝试在django-redis-docs搜索此选项,但我无法找到它。

但是,我注意到现有缓存的指定生存时间值可通过redis本机命令获得,例如" Expire foo 100"

我知道再次使用cache.set会产生同样的效果,但我想使用更简单的方法来生成生存时间。

2 个答案:

答案 0 :(得分:2)

要延长django-redis缓存记录的ttl(生存时间),请使用 expire(密钥,超时)

Django-Redis:Expire & Persist

from django.core.cache import cache

cache.set("foo", 1, timeout=100)
cache.ttl("foo")
>>> 100

如果密钥已经过期,则不能延长ttl(生存时间)

if cache.ttl("foo") > 0:
    cache.expire("foo", timeout=500)

cache.ttl("foo")
>>> 500

答案 1 :(得分:0)

我解决了这个问题。

(1)使用' 原始客户端访问' (2)扩展TTL值而不覆盖

请参阅以下代码。

from redis_cache import get_redis_connection

con = get_redis_connection('default')

con.expire(":{DB NUMBER at settings.py}:" + "foo", 100)