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

Che*_*mer 5 django caching ttl redis

我正在使用 django 1.5.4 和 django-redis 3.7.1

当我检索它时,我想扩展缓存的 ttl(time-to-live)

这是示例代码

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
Run Code Online (Sandbox Code Playgroud)

我试图在django-redis-docs搜索这个选项,但我找不到它。

但是,我注意到在 redis 本机命令中可以使用指定现有缓存的生存时间值,例如“ Expire foo 100

我知道cache.set再次使用会产生相同的效果,但我想使用具有生存时间属性的更简单的方法。

小智 6

要扩展 django-redis 缓存记录的 ttl(time-to-live) 使用expire(key, timeout)

Django-Redis:过期并保留

from django.core.cache import cache

cache.set("foo", 1, timeout=100)
cache.ttl("foo")
>>> 100
Run Code Online (Sandbox Code Playgroud)

如果密钥已经过期,则不能延长 ttl(time-to-live)

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

cache.ttl("foo")
>>> 500
Run Code Online (Sandbox Code Playgroud)


Che*_*mer 1

我解决了这个问题。

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

请参考以下代码。

from redis_cache import get_redis_connection

con = get_redis_connection('default')

con.expire(":{DB NUMBER at settings.py}:" + "foo", 100)
Run Code Online (Sandbox Code Playgroud)