【问题标题】:How to extend cache ttl (time-to-live) in django-redis?如何在 django-redis 中扩展缓存 ttl(生存时间)?
【发布时间】:2014-10-17 06:04:21
【问题描述】:

我正在使用 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

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

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

我知道再次使用cache.set 会产生相同的效果,但我想使用更简单的方法和 time-to-live 属性。

【问题讨论】:

  • 如果您找到了解决方案,请将其作为答案发布,而不是将其编辑到问题中。
  • @AndrewBarber 感谢您的评论。我自己回答了。
  • 是的!感谢您输入答案!首先是回来想更新答案!

标签: django caching redis ttl


【解决方案1】:

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

Django-Redis:Expire & Persist

from django.core.cache import cache

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

如果密钥已过期,则无法延长 ttl(time-to-live)

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

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

【讨论】:

    【解决方案2】:

    我解决了这个问题。

    (1) 使用 'Raw Client Access' 和 (2) 扩展 TTL 值不覆盖

    请参考以下代码。

    from redis_cache import get_redis_connection
    
    con = get_redis_connection('default')
    
    con.expire(":{DB NUMBER at settings.py}:" + "foo", 100)
    

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 2020-06-29
      相关资源
      最近更新 更多