РЕДАКТИРОВАТЬ : Оказывается, это был узел, который вызвал это.Цикл for каким-то образом запускает следующую итерацию, прежде чем дождется выполнения обещания.Redis здесь ничего не делает.
У меня есть программа, которая перебирает массив вещей, которые я хочу сравнить с ключом в Redis.Если условие выполнено, я хочу удалить ключ из базы данных.Я использую Ioredis для этого.Код был следующим:
async function checkthings () {
for (const thing of list_of_things) {
await new Promise(function (resolve, reject){
let stream = redis.scanStream({ match: '5:*'})
stream.on("data", async function (result){
result.length > 0 ? console.log(result) : null;
stream.pause();
for (const key of result) {
let result = await redis.hgetall(key);
if ([CONDITIONS PUT HERE])
await redis.del(key);
}
stream.resume();
})
stream.on("end", function (){
console.log("Done iterating.");
resolve();
})
});
}
}
}
Проблема в том, что когда я запускаю этот код, на первой итерации все работает нормально.Но на второй итерации ключ, который должен был быть удален, был указан в результате сканирования.Даже при использовании KEYS результаты все равно появляются.Я не знаю, была ли это ошибка в моем Node.JS или в Redis.
Извините, если вопрос трудно прочитать.Это мой первый вопрос.