在macbook上,使用Redis.Cluster创建连接后:
当盒盖、锁屏过久,会报错:
events.js:292
throw er; // Unhandled 'error' event
^
Error: connect ENETDOWN 10.38.164.79:6381 - Local (10.232.74.67:59455)
at internalConnect (net.js:923:16)
at defaultTriggerAsyncIdScope (internal/async_hooks.js:313:12)
at net.js:1011:9
at processTicksAndRejections (internal/process/task_queues.js:79:11)
Emitted 'error' event on Socket instance at:
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
errno: 'ENETDOWN',
code: 'ENETDOWN',
syscall: 'connect',
address: '10.38.164.79',
port: 6381
}
当关闭wifi,也会报错:
events.js:174
throw er; // Unhandled 'error' event
^
Error: connect ENETUNREACH 10.38.164.71:6380 - Local (0.0.0.0:51326)
at internalConnect (net.js:875:16)
at defaultTriggerAsyncIdScope (internal/async_hooks.js:294:19)
at defaultTriggerAsyncIdScope (net.js:965:9)
at process._tickCallback (internal/process/next_tick.js:61:11)
Emitted 'error' event at:
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
emmm,把Redis Cluster安装到本机,看看情况会不会好点😏,或者换台电脑试试?
楼上的办法应该可行,甚至优化到不需要联网都可用。
断网肯定是会报错的,关于你说的盒盖报错,Mac上有类似省电功能,降低网络使用,如果你插的是网线,建议你把网卡优先度调制一下, 应该是小问题
断网肯定是会报错的,关于你说的盒盖报错,Mac上有类似省电功能,降低网络使用,如果你插的是网线,建议你把网卡优先度调制一下, 应该是小问题
可是直接通过new Redis 连接单节点。在以上两种情况下,都能恢复过来,而不是直接报错
虽然问题出现在笔记本盒盖、关闭wifi时,但最终关心的是在服务器环境会不会出问题
而且单节点情况下,可以恢复;在集群模式下却会拖垮整个app;感觉行为差别还挺大的
Should we use ETIMEDOUT or ENETUNREACH in test:
it("should close the connection when timeout", function (done) {
const [ host, port ] = ["192.0.0.0",6379]
const redis = new Redis(port, host , {
connectTimeout: 1,
retryStrategy: null,
});
let pending = 2;
redis.on("error", function (err) {
expect(err.message).to.eql(`connect ETIMEDOUT ${host}:${port}`);
if (!--pending) {
done();
}
});
redis.get("foo", function (err) {
expect(err.message).to.match(/Connection is closed/);
if (!--pending) {
redis.disconnect();
done();
}
});
});
Is any place with docs of error codes?
In case of this error, we have rather unreachable redis than timeout.

Most helpful comment
emmm,把Redis Cluster安装到本机,看看情况会不会好点😏,或者换台电脑试试?