Всякий раз, когда я использую команду SCAN в Redis, количество ключей уменьшается - PullRequest
0 голосов
/ 06 августа 2020

Я использую библиотеку redis в node.js, и всякий раз, когда я использую команду сканирования, количество ключей резко уменьшается, у меня было 55 миллионов записей, после завершения сканирования их стало 52 миллиона, в чем может быть проблема?

client.scan(cursor, 'COUNT', count, 'MATCH', match, function (err, res) {
            if (err) return done(err);
            cursor = res[0];
            var records = res[1];
            if (records.length == 0) return done();
            total += records.length;
            callback(null, records, next);
        });

1 Ответ

2 голосов
/ 06 августа 2020

Предположительно, время жизни этих 3 миллионов недостающих ключей истекло, но они еще не были удалены.

Запуск SCAN запускает чтение этих ключей, что вызывает пассивное истечение :

Срок действия ключа пассивно истек просто, когда какой-то клиент пытается получить к нему доступ, и обнаруживается, что время ожидания ключа истекло.

Я не вижу явная ссылка в документации на SCAN, запускающую это, но это описано в этом сообщении блога из Twitter :

Сканирование вызовет истечение срока действия пассивного ключа, когда ключ будет прочитан TTL будет проверен, и если он истек, выбросьте его и ничего не верните .... Идея сканирования всех ключей сработала, использование памяти упало, когда сканирование завершилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...