我正在获取连接错误:连接ECONNREFUSED 127.0.0.1:6379,同时使用docker-compose来使用带有node js的Redis。我在Redis中使用了相同的主机名和服务名,但仍然得到了一个错误。
我的节点js代码是:
const express = require('express');
const redis = require('redis');
const client = redis.createClient({
port: 6379,
host: 'redis'
});
client.connect();
client.on('connect', (err)=>{
if(err) throw err;
else console.log('Redis Connected..!');
});
const app = express();
app.get('/',async (req,res)=>{
let key = req.query['name'];
if(key){
let value = await client.get(key);
if(value){
value++;
client.set(key,value);
res.send(`Hello ${key}, ${value}!`);
console.log(`${key}, ${value}`);
}
else{
value = 1;
client.set(key,value);
res.send(`Hello ${key}, ${value}!`);
console.log(`${key}, ${value}`);
}
}
else{
console.log("Name not passed!");
res.send("Hello World!");
}
});
const port = 3000;
app.listen(port,()=>{
console.log(`App is listening at http://localhost:${port}`);
});
我的docker-compose.yml文件是:
version: "3"
services:
redis:
image: redis:latest
container_name: client
restart: unless-stopped
expose:
- 6379
app:
depends_on:
- redis
build:
context: .
dockerfile: Dockerfile
container_name: app
restart: on-failure
ports:
- "3000:3000"
volumes:
- .:/app
我在控制台上看到是
C:\Users\ashok\Desktop\Practice>docker-compose up
[+] Running 3/3
- Network practice_default Created 0.1s
- Container client Created 1.1s
- Container app Created 0.3s
Attaching to app, client
client | 1:C 02 Apr 2022 11:08:28.885 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
client | 1:C 02 Apr 2022 11:08:28.886 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
client | 1:C 02 Apr 2022 11:08:28.886 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
client | 1:M 02 Apr 2022 11:08:28.889 * monotonic clock: POSIX clock_gettime
client | 1:M 02 Apr 2022 11:08:28.890 * Running mode=standalone, port=6379.
client | 1:M 02 Apr 2022 11:08:28.891 # Server initialized
client | 1:M 02 Apr 2022 11:08:28.891 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
client | 1:M 02 Apr 2022 11:08:28.893 * Ready to accept connections
app |
app | > practice@1.0.0 start
app | > node app.js
app |
app | Server is live at port: 3000
app | node:internal/process/promises:279
app exited with code 1
app | triggerUncaughtException(err, true /* fromPromise */);
app | ^
app |
app | Error: connect ECONNREFUSED 127.0.0.1:6379
app | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
app | Emitted 'error' event on Commander instance at:
app | at RedisSocket.<anonymous> (/app/node_modules/@node-redis/client/dist/lib/client/index.js:339:14)
app | at RedisSocket.emit (node:events:527:28)
app | at RedisSocket._RedisSocket_connect (/app/node_modules/@node-redis/client/dist/lib/client/socket.js:117:14)
app | at processTicksAndRejections (node:internal/process/task_queues:96:5)
app | at async Commander.connect (/app/node_modules/@node-redis/client/dist/lib/client/index.js:162:9) {
app | errno: -111,
app | code: 'ECONNREFUSED',
app | syscall: 'connect',
app | address: '127.0.0.1',
app | port: 6379
app | }
我可以做些什么来解决它?
2条答案
按热度按时间s3fp2yjn1#
我也尝试过在创建客户端时指定主机和端口,但没有成功。
帮我解决了这个问题。
n9vozmp42#
我也遇到过同样的问题,但解决方法是