【发布时间】:2019-07-25 03:25:22
【问题描述】:
我编写了一个简单的服务,使用 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 键/值。有人可以解释一下如何实现这个示例吗?我一直在寻找更多信息或工作示例,但到目前为止没有任何运气。谢谢。
【问题讨论】: