我正在尝试使用ioredis从nodeJS连接redis sentinel实例。我不能连接redis前哨实例,尽管尝试了多种可用选项。我们尚未配置前哨密码。但是,可以使用StackExchange.Redis从.net core连接相同的redis前哨实例。请找到下面的nodeJS代码,
import { AppModule } from './app.module';
import IORedis from 'ioredis';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const ioredis = new IORedis({
sentinels: [
{ host: 'sentinel-host-1' },
{ host: 'sentinel-host-2' },
{ host: 'sentinel-host-3' },
],
name: 'mastername',
password: 'password',
showFriendlyErrorStack: true,
});
try {
ioredis.set('foo', 'bar');
} catch (exception) {
console.log(exception);
}
await app.listen(3000);
}
bootstrap();我们得到的错误是,
[ioredis] Unhandled error event: Error: connect ETIMEDOUT
node_modules\ioredis\built\redis\index.js:317:37)
at Object.onceWrapper (node:events:475:28)
at Socket.emit (node:events:369:20)
at Socket._onTimeout (node:net:481:8)
at listOnTimeout (node:internal/timers:557:17)
at processTimers (node:internal/timers:500:7).net core中使用的连接字符串如下:
Redis_Configuration = "host-1,host-2,host-3,serviceName=mastername,password=password,abortConnect=False,connectTimeout=1000,responseTimeout=1000";发布于 2021-07-14 12:05:37
为了其他人的利益回答这个问题。一切都很好,但是这个nodeJS包正在将redis实例解析成我无法从本地访问的内网i。因此,必须将其放在子网组上并使其正常工作。但是,仅供参考的.net core包不能解析为内网i,因此我可以从本地访问实例。
发布于 2021-06-23 04:37:47
尝试用sentinelPassword替换password。
https://stackoverflow.com/questions/68072309
复制相似问题