Redis“EXPIRE”命令是否刷新密钥的当前生命周期?

时间:2016-05-18 10:08:05

标签: redis

考虑我们有现有密钥,在key1中说Redis非空值。考虑它已经设置了到期时间。

如果我们再次在此密钥上调用EXPIRE命令,在此有效期内,请说EXPIRE key1 10,它是否会刷新该密钥的当前生命周期?

通过“生命周期”我的意思是没有到期时间,但是这个特定的密钥已经在内存中存在多长时间的当前计数器 确切地说,例如:

上午10:00,我们致电:

SET key1 "Blabla"
EXPIRE key1 600

上午10:05我们致电

EXPIRE key1 600

key1到期时间 - 上午10:10或上午10:15?

3 个答案:

答案 0 :(得分:0)

是的,确实冲了它。可以在redis-cli控制台中直接检查:

EXPIRE key1 600
(integer) 1
TTL key1
(integer) 598
TTL key1
(integer) 569

再次设置到期,我们看到,ttl增加了:

EXPIRE key1 600
(integer) 1
TTL key1
(integer) 597

答案 1 :(得分:0)

官方文档中明确解释了

http://redis.io/commands/expire#refreshing-expires

  

可以使用已有的键作为参数调用EXPIRE   现有的到期集。 在这种情况下,密钥的生存时间是   更新为新值。有很多有用的应用程序,   导航会话模式部分中记录了一个示例   下方。

答案 2 :(得分:0)

你所询问的事情并不存在。密钥没有" life",它有一个到期时间。如果您使用EXPIREAT,则会将到期时间设置为准确的时间。如果使用EXPIRE,则会将到期时间设置为运行EXPIRE命令后的秒数。没有"计数器在存储器中已存在这个特定键的时间&#34 ;;只有当前时间和到期时间。只要当前时间小于到期时间,密钥就不会过期。每当您使用EXPIREEXPIREAT时,它都会更改到期时间,之前的任何值都不再重要。