我希望在Redis中存储一个长度不确定的集合,并且整个集合应该在几分钟后过期。
因此,我正在执行以下操作:
RPUSH 'a' 'b'
EXPIRE 'a' 120
RPUSH 'a' 'c'
EXPIRE 'a' 120
但在这种情况下,我只有在'a'中有'c',因为EXPIRE之后的第一个RPUSH销毁了旧值。
先设置EXPIRE,我们在第一个RPUSH之后得到TTL->-1。
所以我的问题是,有没有我想要的方法?
我希望在Redis中存储一个长度不确定的集合,并且整个集合应该在几分钟后过期。
因此,我正在执行以下操作:
RPUSH 'a' 'b'
EXPIRE 'a' 120
RPUSH 'a' 'c'
EXPIRE 'a' 120
但在这种情况下,我只有在'a'中有'c',因为EXPIRE之后的第一个RPUSH销毁了旧值。
先设置EXPIRE,我们在第一个RPUSH之后得到TTL->-1。
所以我的问题是,有没有我想要的方法?
在 EXPIRE 后的第一个 RPUSH 将销毁旧值
这不是 Redis 的行为。你确定 LIST a
在添加c
时没有已经过期了吗?我使用 redis-cli
进行了快速检查,并使用您的方法确认 Redis 正好符合您的预期行为:
RPUSH test foo
EXPIRE test 120
RPUSH test bar
EXPIRE test 120
LRANGE test 0 -1
# 1) "foo"
# 2) "bar"