我想在redis中存储一组不确定的长度,整个集合应在几分钟后过期.
所以,我正在做:
RPUSH’a”b’
EXPIRE’a’120
RPUSH’a”c’
EXPIRE’a’120
但是在这种情况下我只有’c’在’a’中,因为EXPIRE之后的第一个RPUSH会摧毁旧的值.
首先设置EXPIRE,在第一次RPUSH后我们有TTL-> -1.
所以我的问题是,有没有办法做我想要的?
最佳答案
the first RPUSH after EXPIRE desroys the old value
这不是行为或Redis.当你向它添加c时,你确定LIST a还没有简单过期吗?我使用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秒.对列表的任何更改都不会影响到期或现有值.