Я могу установить ключ в Redis с помощью:
client.set("tmpkey", 100, "EX", 100);
Но эта функция не устанавливает ключ при вызове внутри обратного вызова другой функции Redis (KEYS или SCAN):
var client = redis.createClient(process.env.REDIS_PORT, process.env.REDIS_HOST);
client.on('error', function (err) {
console.info(err);
});
client.keys("TAG:*", function(err, res) {
console.info(res);
client.set("TMP", 100, "EX", 100);
});
client.quit(function (err, res) {
console.info('Exiting from quit command.');
});
Как я могу установить значение в Redis после сканирования существующих ключей?
сообщений об ошибках нет, просто не устанавливает ключ
Угадайте что-нибудь с вашей библиотекой Redis. Должно работать так же.
But this function does not do the same
Что оно делает?
Я использую node-redis.
он просто не устанавливает этот ключ. к сожалению, он не возвращает никаких сообщений об ошибках
Я предполагаю, что команда KEYS работает слишком долго, поэтому вам придется долго ждать, пока будет выполнен код следующей строки. Сколько ключей у вас в базе данных?
Оказалось, что client.quit() был вызван до полного выполнения обратного вызова функции client.keys().
Перемещение client.quit() в обратный вызов client.keys() решило проблему для меня.
client.keys("TAG:*", function(err, res) {
console.info(res);
client.set("TMP", 100, "EX", 100);
client.quit(function (err, res) {
console.info('Exiting from quit command.');
});
});
Но лучшим решением будет использование промисов.
Вы получаете сообщение об ошибке? Где вы определяете клиента?