Я написал простой сервис, использующий Redis для хранения данных в памяти или выборки с диска, а затем для сохранения в памяти.Сейчас я пытаюсь контролировать редкие случаи, когда загрузка в Redis происходит медленно.Я видел один пример (https://gist.github.com/stockholmux/3a4b2d1480f27df8be67#file-timelimitedredis-js), который, кажется, решил эту проблему, но у меня были проблемы с реализацией.
Связанная реализация:
/**
* returns a function that acts like the Redis command indicated by cmd except that it will time out after a given number of milliseconds
*
* @param {string} cmd The redis commmand to execute ('get','hset','sort', etc.)
* @param {integer} timeLimit The number of milliseconds to wait until returning an error to the callback.
*
*/
function timeLimited(cmd, timeLimit) {
return function() {
var
argsAsArr = Array.prototype.slice.call(arguments),
cb = argsAsArr.pop(),
timeoutHandler;
timeoutHandler = setTimeout(function(){
cb(new Error('Redis timed out'));
cb = function() {};
}, timeLimit);
argsAsArr.push(function(err, values){
clearTimeout(timeoutHandler);
cb(err,values);
});
client[cmd].apply(client,argsAsArr);
};
}
однако я не наденуЯ не понимаю, как реализовать это, потому что клиент никогда не определяется, а ключ / значение redis никогда не передаются. Может кто-нибудь объяснить немного о том, как можно реализовать этот пример? Я искал дополнительную информацию или работупример, но пока не повезло. Спасибо.