【发布时间】:2014-10-26 09:40:37
【问题描述】:
我可以在redis中设置全局TTL吗?而不是每次设置键时都设置TTL。
我用谷歌搜索,但找不到任何线索。所以好像做不到?
谢谢。
【问题讨论】:
标签: redis
我可以在redis中设置全局TTL吗?而不是每次设置键时都设置TTL。
我用谷歌搜索,但找不到任何线索。所以好像做不到?
谢谢。
【问题讨论】:
标签: redis
不,Redis 没有全局/默认 TTL 的概念,是的,您必须为每个键单独设置它。但是,根据您的要求和您正在尝试做的事情,可能还有其他方法可以实现您的目标。换句话说,你为什么需要它?
例如,如果您想将 Redis 用作缓存而不担心必须删除“旧”项,则只需将 maxmemory_policy 设置为 allkey-lru 即可。每当 Redis 的内存耗尽时,这将驱逐最近最少使用的键。
编辑:有关更多信息,请参阅下面来自 @arganzheng 和 @Kristján 的 cmets 中的有用链接,以及 redis.conf 配置文件中的内联文档。
【讨论】:
如果你在设置一个key,你可以同时设置TTL: look at the set command
另一方面,您可以通过编写脚本来完成此操作(在 linux 上,例如 - 60 秒):
for k in `redis-cli --raw keys '*'` ; do redis expire $k 60;done
【讨论】:
虽然不是“纯” Redis 解决方案,但请查看实现此目的的 RedisGears 示例:https://oss.redislabs.com/redisgears/master/examples.html#automatic-expiry
【讨论】: