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