我正在将 ioredis 与节点应用程序一起使用,由于集群中的一些问题,我开始得到:
集群重定向过多。最后一个错误:错误:连接已关闭。
因此,我所有的 redis 调用都失败了,并且在很长一段时间后,从 1 秒到 130 秒不等。
ioredis 库是否有任何默认超时,用于在向 redis 服务器发送执行命令后断言调用?
向redis服务器发送命令的失败时间更长,范围为100秒,是因为集群故障导致redis的队列大小高吗?
示例代码:
this.getData = function(bucketName, userKey) {
let cacheKey = cacheHelper.formCacheKey(userKey, bucketName);
let serviceType = cacheHelper.getServiceType(bucketName, cacheConfig.service_config);
let log_info = _.get(cacheConfig.service_config, 'logging_options.cache_info_level', true);
let startTime = moment();
let dataLength = null;
return Promise.try(function(){
validations([cacheKey], ['cache_key'], bucketName, serviceType, that.currentService);
return cacheStore.get(serviceType, cacheKey);
})
.then(function(data) {
dataLength = (data || '').length;
return cacheHelper.uncompress(data);
})
.then(function(uncompressedData) {
let endTime = moment();
let responseTime = endTime.diff(startTime, 'miliseconds');
if(!uncompressedData) {
if(log_info) logger.consoleLog(bucketName, 'getData', 'miss', cacheKey, that.currentService,
responseTime, dataLength);
} else {
if(log_info) logger.consoleLog(bucketName, 'getData', 'success', cacheKey, that.currentService,
responseTime, dataLength);
}
return uncompressedData;
})
.catch(function(err) {
let endTime = moment();
let responseTime = endTime.diff(startTime, 'miliseconds');
logger.error(bucketName, 'getData', err.message, userKey, that.currentService, responseTime);
throw cacheResponse.error(err);
});
};
这里
logger.error(bucketName, 'getData', err.message, userKey, that.currentService, responseTime);
开始给出 1061ms 到 109939ms 范围内的响应时间。
请提供一些输入。