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

但是在这种情况下,我在“a”中只有“c”,因为EXPIRE之后的第一个RPUSH破坏了旧值。
首先设置EXPIRE,在第一个RPUSH之后设置TTL->-1。

所以我的问题是,有什么办法可以做到吗?

最佳答案



这不是行为或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秒。列表的任何更改都不会影响到期或现有值。

09-29 19:33