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

时间:2014-09-02 07:28:05

标签: redis

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

我用谷歌搜索,但找不到任何线索。所以似乎无法做到?

感谢。

3 个答案:

答案 0 :(得分:20)

不,Redis没有全局/默认TTL的概念,是的,您必须单独为每个键设置它。但是,根据您的要求以及您要做的事情,可能还有其他方法可以实现您的目标。换句话说,你为什么需要它呢?

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

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

答案 1 :(得分:2)

如果要设置密钥,可以在同一时间设置TTL: look at the set command

一方,你可以通过编写脚本(在Linux上像 - 持续60秒):

for k in `redis-cli --raw keys '*'` ; do redis expire $k 60;done

答案 2 :(得分:2)

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