我想在redis中存储一组不确定的长度,整套设置应在几分钟后过期
所以,我正在做:
RPUSH 'a' 'b'
EXPIRE 'a' 120
RPUSH 'a' 'c'
EXPIRE 'a' 120
但是在这种情况下我在'a'中只有'c',因为EXPIRE之后的第一个RPUSH会摧毁旧值。
首先设置EXPIRE,在第一次RPUSH后我们有TTL-> -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秒。对列表的任何更改都不会影响到期或现有值。