fsd-nodejs / service-mw2

Node.js 全栈开发之 Midway.js 最佳实践

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

redis连接超时

guojoa opened this issue · comments

redis设置无密码和有密码都测试了,都提示连接超时

2020-12-24 12:23:49,281 ERROR 21990 nodejs.ETIMEDOUTError: connect ETIMEDOUT
at Socket. (/home/guo/development/javascript/midwayjs/project/service-mw2/node_modules/_ioredis@4.19.4@ioredis/built/redis/index.js:308:37)
at Object.onceWrapper (events.js:421:28)
at Socket.emit (events.js:315:20)
at Socket.EventEmitter.emit (domain.js:486:12)
at Socket._onTimeout (net.js:483:8)
at listOnTimeout (internal/timers.js:554:17)
at processTimers (internal/timers.js:497:7)
errorno: "ETIMEDOUT"
code: "ETIMEDOUT"
syscall: "connect"
name: "ETIMEDOUTError"

启动的是哪个环境?配置 redis 的 IP 能正常访问吗

image
需要确认你的 Redis 服务已经启动

可以确定启动了,我单独创建一个项目,安装egg-redis后是正常的,以下是我的代码

import { Controller, Get, Provide } from '@midwayjs/decorator';
import { Context } from 'egg';

@provide()
@controller('/')
export class HomeController {
@get('/')
async home() {
return 'Hello Midwayjs!';
}

@get('/test')
async test(ctx:Context) {
console.log('ctx',await ctx.app.redis.get('a'));
const a = await ctx.app.redis.get('a')
return 'my test ' + a;
}
}
网页访问test方法能正常返回redis设置的值

image
我复现了你说的问题,一般这种情况,需要修改config文件中配置的IP

默认是127.0.0.1,我改成localhost,或192.168.1.x。还是不行

可能需要你自行排查下哪个环节有问题。

我的也连不上Redis,都修改了也不行,不知道为啥

麻烦提供一下复现步骤

我直接修改了 config.default.ts 文件中的配置
image

本地开发你需要修改config.local.ts这个文件