代码之家  ›  专栏  ›  技术社区  ›  Sato

我可以在redis中设置全局TTL吗?

  •  33
  • Sato  · 技术社区  · 10 年前

    我可以在redis中设置全局TTL吗?而不是每次设置密钥时设置TTL。

    我搜索了一下,但找不到任何线索。所以这似乎无法完成?

    谢谢

    3 回复  |  直到 10 年前
        1
  •  27
  •   Itamar Haber    9 年前

    不,Redis没有全局/默认TTL的概念,是的,您必须为每个密钥独立设置TTL。然而,根据你的要求和你想做的事情,可能还有其他方法来实现你的目标。换言之,你为什么需要它?

    例如,如果您想将Redis用作缓存,而不必担心必须删除“旧”项,那么只需设置 maxmemory_policy allkey-lru 。每当Redis的内存耗尽时,这将驱逐最近最少使用的密钥。

    编辑:有关更多信息,请参阅以下@arganzheng和@Kristjn评论中的有用链接,以及 redis.conf 配置文件。

        2
  •  4
  •   Philippe T.    10 年前

    如果您正在设置密钥,则可以同时设置TTL: look at the set command

    另一方面,您可以通过编写脚本(在类似linux的环境中,持续60秒)来完成此操作:

    for k in `redis-cli --raw keys '*'` ; do redis expire $k 60;done
    
        3
  •  2
  •   Itamar Haber    5 年前

    虽然不是一个“纯”的Redis解决方案,但看看这个实现这一目的的RedisGears示例: https://oss.redislabs.com/redisgears/master/examples.html#automatic-expiry