Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Redis Cloud and connect-redis: the client is closed

I currently build a website using Express and want to use redis cloud database to save userID in session. The redisClient is created in redisClient.js and after that i pass it to redisStore in session in app.js. Here is the code:

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;

app.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
}));

The problem is: upon starting the server i got error messages log in console like this:

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
...

I used this guide to set up redis cloud and assign dotenv variables (host, port and password). I have debugged and the dotenv is working fine and I have host, port and password variables correct.

But the problem still remains. I still get The client is closed and connect ECONNREFUSED 127.0.0.1:6379 error as in console log above. How can i fix this?

like image 570
Halsey Avatar asked Sep 01 '25 22:09

Halsey


1 Answers

was stuck on same issue and found some luck. have used 'ioredis' module instead of redis which worked seamlessly.

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;
like image 97
Vishwajeet Mishra Avatar answered Sep 03 '25 12:09

Vishwajeet Mishra