Я хочу выполнить несколько redis
операций из приложения nodejs
с некоторой заданной задержкой между каждым выполнением.
Я использую node_redis клиент. Версия узла v8.10.0
Я думал о его реализации, как показано ниже:
function func(id1, max){
for(i=0; i < max; i++){
client.incr(id1, (error, value) => {
if(error){
console.log("redis incr failed : " + error);
return error;
}
console.log("updated value : " + value);
});
sleep.sleep(1);
}
client.quit();
return("incr value ended for : " + id);
}
func(id1, max);
Но тогда в этом случае полный redis incr
происходит с натяжкой, и обратный вызов (console.log("updated value : " + value"))
происходит с задержкой. Примечание: для sleep
в приведенном выше коде я использую пакет sleep .
Я также попробовал следующее решение (найдено после поиска в Google):
var delay = 1000; //1 second
for (var i = 0; i < max; i++) {
setTimeout(() => {
client.incr(id, (error, value) => {
if(error){
console.log("redis incr failed : " + error);
return error;
}
console.log("updated value : " + value);
});
}, delay);
}
Но он также ведет себя так же, как и выше.
Afaik, это вызвано тем, что nodejs synchronous
и (я думаю) node_redis
клиент async
.
TL; DR
То, что я хочу сделать, это увеличивать ключ каждые n секунд в redis
с помощью nodejs
.
Заранее спасибо!
PS: я новичок в nodejs
.