Redis:如何设置更新列表的到期时间

时间:2013-09-26 11:29:46

标签: redis

我想在redis中存储一组不确定的长度,整套设置应在几分钟后过期 所以,我正在做:
RPUSH 'a' 'b'
EXPIRE 'a' 120
RPUSH 'a' 'c'
EXPIRE 'a' 120

但是在这种情况下我在'a'中只有'c',因为EXPIRE之后的第一个RPUSH会摧毁旧值。
首先设置EXPIRE,在第一次RPUSH后我们有TTL-> -1。

所以我的问题是,有没有办法做我想要的?

1 个答案:

答案 0 :(得分:2)

  

EXPIRE取消旧值后的第一个RPUSH

这不是行为或Redis。当您向其添加a时,您确定LIST c是否已经过期了吗?我使用redis-cli进行了快速检查,并确认Redis的行为正是您希望它如何使用您的方法:

RPUSH test foo
EXPIRE test 120
RPUSH test bar
EXPIRE test 120
LRANGE test 0 -1
# 1) "foo"
# 2) "bar"

调用EXPIRE会正确重置过期时间,因此会延长120秒。对列表的任何更改都不会影响到期或现有值。