2014-09-02 75 views

回答

10

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

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

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

+0

看到这个:http://redis.io/topics/config – arganzheng 2015-11-24 12:14:44

+1

也http://redis.io/topics/lru-cache – 2015-12-28 23:20:20

3

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

的一侧,您可以通过脚本做到了这一点(像Linux的 - 60秒):

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

“键”在生产中是可怕的,因为它同步锁定数据库。只有普通的小型数据库可以逃脱这一点。如果你想遍历键,使用SCAN。 这个选项的另一个问题是,它实际上会刷新所有按键的TTL,所以所有的按键都会永远活着,除非你确保运行脚本的次数少于你想说的TTL。如果您想管理网络会话,并且需要在30天后过期,那么您只能每31天运行脚本... – 2017-05-25 22:58:24

相关问题