我想在 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。
所以我的问题是,有办法做到我想要的吗?
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 秒。对列表的任何更改都不会影响过期值或现有值。
归档时间: |
|
查看次数: |
15023 次 |
最近记录: |