【问题标题】:Redis: How to set expire for updating listRedis:如何为更新列表设置过期时间
【发布时间】:2013-10-02 08:23:45
【问题描述】:

我想在 redis 中存储一组不确定的长度,整个集合应该在几分钟后过期。
所以,我在做:
RPUSH 'a' 'b'
EXPIRE 'a' 120
RPUSH 'a' 'c'
EXPIRE 'a' 120

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

所以我的问题是,有没有我想要的方法?

【问题讨论】:

  • 无法复制。 RPUSH 对我来说可以正常工作。
  • 例如上面的 LRANGE 'a' 0 1 的结果是什么?

标签: redis


【解决方案1】:

EXPIRE 后的第一个 RPUSH 销毁旧值

这不是 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 秒。对列表的任何更改都不会影响到期或现有值。

【讨论】:

  • 我的“不太好”的主机安装了旧版本:1.2。当前版本一切正常。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-05-15
  • 2012-07-16
  • 2019-05-24
  • 1970-01-01
  • 2020-03-22
  • 2021-09-11
  • 2016-09-02
  • 1970-01-01
相关资源
最近更新 更多