Redis:如何设置更新列表的过期时间

Ste*_*iss 5 redis

我想在 Redis 中存储一组长度不确定的数据,整个数据集应该在几分钟后过期。

所以,我正在做:

RPUSH 'a' 'b'  
EXPIRE 'a' 120  
RPUSH 'a' 'c'  
EXPIRE 'a' 120
Run Code Online (Sandbox Code Playgroud)

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

所以我的问题是,有办法做到我想要的吗?

Car*_*auf 6

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"
Run Code Online (Sandbox Code Playgroud)

调用 EXPIRE 会正确重置过期时间,因此会延长 120 秒。对列表的任何更改都不会影响过期值或现有值。