【问题标题】:How to reset TTL when a redis key is accessed?访问redis key时如何重置TTL?
【发布时间】:2019-09-08 14:53:34
【问题描述】:

我在 redis 中有一些带有 TTL 的键。因此,通常当 TTL 通过时,密钥将被驱逐。

但我想做的是,在每次访问(检索)密钥时,我都希望将 TTL 重置为我之前设置的原始值。

例如:我为一个键设置了 2 小时。 1 小时后,密钥被访问。那时我想再次将 TTL 设置为 2 小时。因此,只有在 TTL 生命周期内未访问该密钥时,该密钥才会被驱逐。

如何有效地做到这一点?

【问题讨论】:

  • 惊讶这实际上不是默认命令...似乎是一个常见的用例!

标签: python redis


【解决方案1】:

您只能通过使用访问命令发出另一个EXPIRE 命令来执行此操作。甚至official documentation 也没有提到任何其他选项。

您可能希望将这些命令放在管道上以获得更好的响应时间。

例如:

connection = redis.StrictRedis()
with connection.pipeline() as pipe:
    pipe.get("key")
    pipe.expire("key", 7200)
    pipe.execute()

【讨论】:

  • 谢谢,我也找不到比这个更好的了。
猜你喜欢
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 2018-02-04
  • 2020-01-09
  • 2019-10-18
  • 2018-10-08
  • 2014-04-09
相关资源
最近更新 更多