当生存时间达到 0 时,我的 Redis 服务器不会删除键。
这是示例代码:
redis-cli
>SET mykey "ismykey"
>EXPIRE mykey 20
#check TTL
>TTL mykey
>(integer) 17
> ...
>TTL mykey
>(integer) -1
#mykey chould have expired:
>EXISTS mykey
>(integer) 1
>#oh still there, check its value
>GET mykey
>"ismykey"
如果我检查 redis 返回的信息,它说 0 个密钥已过期。
任何想法?
thanks.
由于您正在执行“...”,所以很难确定,但我想说您在该部分期间设置了 mykey,这将有效地消除过期。
来自过期手册 http://redis.io/commands/expire
仅当使用 DEL 删除按键时,超时才会被清除
命令或使用 SET 或 GETSET 命令覆盖
另外,关于 TTL 的 -1 回复 http://redis.io/commands/ttl
返回值
整数回复:TTL(以秒为单位)或 -1(当密钥不存在时)
存在或没有超时。
编辑:请注意,此行为在 Redis 2.8 中发生了变化
从 Redis 2.8 开始,发生错误时的返回值发生了变化:
如果该键不存在,该命令将返回 -2。
如果密钥存在但没有关联的过期时间,则该命令返回 -1。
换句话说,如果您的密钥存在,它似乎是持久的,即没有设置任何过期时间。
编辑:如果我在 REDIS 从属服务器上创建密钥,我似乎可以重现这一点,如果没有主服务器输入,从属服务器不会删除该密钥,因为通常您不会在从属服务器上本地创建密钥。这里是这样吗?
然而,虽然连接到主设备的从设备不会使密钥过期
独立(但会等待来自主机的 DEL),
他们仍然会采用现有的过期状态的完整状态
数据集,因此当从站被选举为主站时,它将能够
独立地使密钥失效,完全充当主控。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)