【问题标题】:redis key set to expire not actually removed设置为过期的 redis 密钥实际上并未被删除
【发布时间】:2018-05-08 18:20:15
【问题描述】:

在 Redis 版本:2.8.19 中是否会出现以下行为:

127.0.0.1:6380> set fooxyz 1
OK
127.0.0.1:6380> ttl fooxyz
(integer) -1
127.0.0.1:6380> expire fooxyz 3
(integer) 1
(1.98s)
127.0.0.1:6380> ttl fooxyz
(integer) 0
127.0.0.1:6380> ttl fooxyz
(integer) 0
(0.96s)
127.0.0.1:6380> ttl fooxyz
(integer) 0
127.0.0.1:6380> ttl fooxyz
(integer) 0
127.0.0.1:6380> get fooxyz
"1"

如您所见,我在键 fooxyz 上设置了过期时间,它达到 0,但实际上它从未被删除。在过期时间之后,我仍然能够检索到 fooxyz 的值。

这是可以预料的吗?它最终会被移除/垃圾收集吗?

根据redis documentation

当一些客户端试图访问它时,密钥就会主动过期, 发现key超时了。

然而,这里我有一个积极尝试检索密钥的示例,但它没有过期。

【问题讨论】:

标签: redis ttl


【解决方案1】:

esilver,我无法在 v3.2.2 中重现您的问题,延迟过期对我来说很好:

127.0.0.1:6379> set fooxyz 1
OK
127.0.0.1:6379> ttl fooxyz
(integer) -1
127.0.0.1:6379> expire fooxyz 3
(integer) 1
127.0.0.1:6379> ttl fooxyz
(integer) -2
127.0.0.1:6379> get fooxyz
(nil)

【讨论】:

  • 您是否同意重复获取 0 的 ttl 密钥很奇怪?另外 - 这是在一个从属主机但不是只读的 redis 进程上,这意味着我也可以写入从属服务器。你认为这可能相关吗?
  • 是的,这很奇怪。而且我仍然无法在可写的奴隶中复制它。
【解决方案2】:

@esilver 是的,这很奇怪。而且我仍然无法在可写的奴隶上复制它:(

127.0.0.1:6000> info replication
# Replication
role:slave       <=======
master_host:127.0.0.1
master_port:6001
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:24786
slave_priority:100
slave_read_only:0     <=======
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6000> set fooxyz 1
OK
127.0.0.1:6000> ttl fooxyz
(integer) -1
127.0.0.1:6000> expire fooxyz 3
(integer) 1
127.0.0.1:6000> ttl fooxyz
(integer) -2
127.0.0.1:6000> get fooxyz
(nil)

【讨论】:

    【解决方案3】:

    你说它发生在奴隶身上。会不会是你在master上有这样的key,SET它在slave上,EXPIRE它在slave上,它会过期并从master恢复?

    编辑我在 4.0.9 上用一个主设备和一个可写从设备对其进行了测试,但事实并非如此。从属设备上的密钥正确过期,即使没有GET 访问权限也会自动删除。您仍然可以尝试在您的版本上测试此案例。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 2023-03-04
    • 2015-12-18
    • 2011-02-25
    • 2014-09-06
    • 2020-09-26
    • 2020-04-19
    • 2016-04-25
    相关资源
    最近更新 更多