Redis Cloud 和 connect-redis:客户端关闭

Hal*_*sey 4 redis node.js express

我目前使用 Express 构建一个网站,想使用 redis 云数据库在会话中保存 userID。redisClient 在 redisClient.js 中创建,之后我将其传递给 app.js 中会话中的 redisStore。这是代码:

redisClient.js

const redis = require("redis");
let redisClient = redis.createClient({
    host: process.env.REDIS_HOSTNAME,
    port: parseInt(process.env.REDIS_PORT),
    password: process.env.REDIS_PASSWORD
});

redisClient.on('error', function(err) {
    console.log('*Redis Client Error: ' + err.message);
});
redisClient.on('connect', function(){
   console.log('Connected to redis instance');
});

(async () => {
    await redisClient.auth(process.env.REDIS_PASSWORD)
        .catch(err => {console.log('Redis auth error: ' + err.message)});
    await redisClient.connect()
        .catch(err => {console.log('Redis connect error: ' + err.message)});
})();

module.exports = redisClient;
Run Code Online (Sandbox Code Playgroud)

应用程序.js

const session = require("express-session");
const redisStore = require('connect-redis')(session);
const redisClient = require('./session-store/redisClient');

...

app.use(cookieParser());
app.use(session({
  store: new redisStore({client: redisClient, ttl: 3600 * 24 * 30}),
  saveUninitialized: false,
  secret: process.env.SESSION_SECRET,
  resave: false
}));

Run Code Online (Sandbox Code Playgroud)

问题是:启动服务器后,我在控制台中收到错误消息,如下所示:

Redis auth error: The client is closed
*Redis Client Error: connect ECONNREFUSED 127.0.0.1:6379
*Redis Client Error: connect ECONNREFUSED 127.0.0.1:6379
*Redis Client Error: connect ECONNREFUSED 127.0.0.1:6379
*Redis Client Error: connect ECONNREFUSED 127.0.0.1:6379
...
Run Code Online (Sandbox Code Playgroud)

我使用本指南来设置 Redis 云并分配 dotenv 变量(主机、端口和密码)。我已经调试完毕,dotenv 工作正常,并且主机、端口和密码变量正确。

但问题仍然存在。我仍然收到The client is closeed and connect ECONNREFUSED 127.0.0.1:6379错误,如上面的控制台日志所示。我怎样才能解决这个问题?

小智 9

被困在同样的问题上并找到了一些运气。使用“ioredis”模块而不是无缝工作的redis。

const redis = require('ioredis');
const redisClient = redis.createClient({host:'your host address',port:your port,username:'',password:''});

redisClient.on('connect',() => {
    console.log('connected to redis successfully!');
})

redisClient.on('error',(error) => {
    console.log('Redis connection error :', error);
})

module.exports = redisClient;
Run Code Online (Sandbox Code Playgroud)