考虑我们有现有密钥,在key1
中说Redis
非空值。考虑它已经设置了到期时间。
如果我们再次在此密钥上调用EXPIRE
命令,在此有效期内,请说EXPIRE key1 10
,它是否会刷新该密钥的当前生命周期?
通过“生命周期”我的意思是没有到期时间,但是这个特定的密钥已经在内存中存在多长时间的当前计数器 确切地说,例如:
上午10:00,我们致电:
SET key1 "Blabla"
EXPIRE key1 600
上午10:05我们致电
EXPIRE key1 600
key1
到期时间 - 上午10:10或上午10:15?
答案 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 ;;只有当前时间和到期时间。只要当前时间小于到期时间,密钥就不会过期。每当您使用EXPIRE
或EXPIREAT
时,它都会更改到期时间,之前的任何值都不再重要。