Node.js 如果未修改,则使Redis密钥过期

Node.js 如果未修改,则使Redis密钥过期,node.js,redis,node-redis,Node.js,Redis,Node Redis,如果在过去x分钟内未修改redis键的值,是否有一种直接的方法使其过期 我怀疑这是可能的-但我想知道是否有本机解决方案或一些逻辑和/或额外状态很少的东西 现在,这种行为可能已经存在了——我调用了一个键。然后,如果我在该键上调用SET,我可以再次调用EXPIRE,并且该键将使用新值而不是旧值过期?您的假设是正确的,只需逐个过期即可 EXPIRE不会累加或重置,它只是将计时器设置为新值 示例(没有详细的错误处理): (很抱歉给你回电话。) 在我的系统上运行此命令: [zlatko@desktop-m

如果在过去x分钟内未修改redis键的值,是否有一种直接的方法使其过期

我怀疑这是可能的-但我想知道是否有本机解决方案或一些逻辑和/或额外状态很少的东西


现在,这种行为可能已经存在了——我调用了一个键。然后,如果我在该键上调用SET,我可以再次调用EXPIRE,并且该键将使用新值而不是旧值过期?

您的假设是正确的,只需逐个过期即可

EXPIRE不会累加或重置,它只是将计时器设置为新值

示例(没有详细的错误处理):

(很抱歉给你回电话。)

在我的系统上运行此命令:

[zlatko@desktop-mint ~/tmp]$ node test.js
Setting key...
Setting expire on the key...
Waiting 6 sec before checking expire time...
expiryTime: 4
Expiring key again...
Waiting 3 more sec before checking expire time...
New expiryTime: 7
[zlatko@desktop-mint ~/tmp]$ 
如您所见,我们将过期时间设置为10秒。6秒后,显然剩下的时间是4秒

如果我们在那一刻,还有4秒,再次将expire设置为10,我们只需从10开始。
3秒之后,我们还可以再过7秒。

谢谢,Redis文档中的“超时时间只会被删除或覆盖密钥内容的命令清除,包括DEL、SET、GETSET和所有*STORE命令…”因此,我需要小心在调用SET后调用EXPIRE,而不是相反。但是,如果SET总是清除超时,那么文档就不会清除超时…我想我需要知道SET是否总是清除超时。是的,但是你也可以使用
setex
自动设置密钥并使其过期。另外,SET也不会清除超时。只需将新值添加到一个可能存在的键中,该键之前具有可选超时。我有相同的场景,所以我按照您所说的做了。每当我访问密钥时,我都会使用新值延长其有效期。。是的。
[zlatko@desktop-mint ~/tmp]$ node test.js
Setting key...
Setting expire on the key...
Waiting 6 sec before checking expire time...
expiryTime: 4
Expiring key again...
Waiting 3 more sec before checking expire time...
New expiryTime: 7
[zlatko@desktop-mint ~/tmp]$