我目前正在使用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;
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
}));
问题是:在启动服务器时,我在控制台中看到了以下类似的错误消息:
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
...
我使用了这个指南来设置Redis云并分配dotenv变量(主机,端口和密码)。我已经进行了调试,dotenv正常工作,并且我的主机、端口和密码变量正确。
但问题仍然存在。我仍然在控制台日志中收到The client is closed和connect ECONNREFUSED 127.0.0.1:6379错误提示。我该如何解决这个问题?
ioredis
模块而不是redis
吗?这是兼容性问题还是其他原因? - Halsey