我Redis的按键不会过期(my redis keys do not expire)

2019-07-30 20:35发布

我Redis的服务器不会删除键,当时间到现场达到0。

下面是一个示例代码:

redis-cli
>SET mykey "ismykey"
>EXPIRE mykey 20
#check TTL
>TTL mykey
>(integer) 17
> ...
>TTL mykey
>(integer) -1
#mykey chould have expired:
>EXISTS mykey
>(integer) 1
>#oh still there, check its value
>GET mykey
>"ismykey"

如果我检查通过的Redis的信息回报,它说0键则被过期。

任何的想法?

谢谢。

Answer 1:

既然你做了“......”这是很难肯定地说,但我说你那部分,这将有效地消除在呼气时设置的myKey。

从EXPIRE手册

当钥匙使用DEL命令删除或改写使用SET或GETSET命令超时仅清零

另外,关于从TTL -1回复

返回值

整型回复:TTL以秒-1时,关键不存在或没有超时。

编辑:请注意,这种行为在Redis的2.8改变

与Redis的2.8开始在错误的情况下返回值更改:
该命令返回-2如果该键不存在。
该命令返回-1,如果关键的存在,但没有相关的到期。

换句话说,如果你的键存在,它似乎具有持久性,即没有任何到期集。

编辑:看来我可以重现这个,如果我创建的Redis从服务器上的关键,从不会删除无主输入密钥,因为通常你不会在本地上的从创建关键点。 这是这里的情况?

然而同时连接到主从设备将不能独立到期键(但将等待DEL从主设备的),他们仍然会采取全状态的到期现有数据集中,所以当奴隶被选举为掌握它就能独立到期的钥匙,完全作为主。



文章来源: my redis keys do not expire