ли следующее поведение ожидается в Redis, версии: 2.8.19:Redis ключа истечь фактически не удаляется
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,
Ключ активно истек просто, когда некоторый клиент пытается получить к нему доступ, и ключ найден, чтобы быть истекло.
И все же здесь у меня есть пример активной попытки получить ключ, и он не истекает.
Согласны ли вы, что неоднократно получать ТТЛ 0 для ключа странно Кроме того - это на процесс Redis, что следящая мастер, но не является readonly, то есть я также могу написать подчиненному. Считаете ли вы, что это может быть связано? – esilver
Да, это странно. И я все еще не могу воспроизвести его в перезаписываемом подчиненном. –