NodeJS无法连接到Redis

时间:2018-05-15 08:10:57

标签: node.js redis

我有nodejs app需要连接到Redis数据库。 但是,在尝试连接到Redis时,它始终返回" false "。 我在可以从cli访问的同一台机器上运行Redis实例,还有另一个nodejs应用程序连接到同一个Redis实例。

我不会在/var/log/redis/redis-server.log中看到任何错误,也不会在控制台中打印出来。

任何想法可能是什么问题?

$ nodejs -v v8.11.1

$ redis-server -v Redis服务器v = 4.0.9 sha = 00000000:0 malloc = jemalloc-3.6.0 bits = 64 build = 1bc80a08306a3efd

const redis = require('redis'),
redisClient = redis.createClient(6379, '127.0.0.1');

const REDIS_USER_DATA_INDEX = 2;

redisClient.select(REDIS_USER_DATA_INDEX);

redisClient.on('connect', function () {
    console.log('redis connected');
}).on('error', function (error) {
    console.log(error);
});

console.log(`connected ${redisClient.connected}`);

修改 我在redisClient.on()回调

中都没有收到任何事件

2 个答案:

答案 0 :(得分:2)

基本上,您正在调用redisClient.on(),它是一个异步函数,并且您在回调函数之外输出连接状态,因为redis仍未连接,所以肯定会返回false。我建议把你的代码放在回调函数中。试试下面给出的代码:

    const redis = require('redis'),
redisClient = redis.createClient(6379, '127.0.0.1');

const REDIS_USER_DATA_INDEX = 2;

redisClient.select(REDIS_USER_DATA_INDEX);

redisClient.on('connect', function () {
    console.log('redis connected');
    console.log(`connected ${redisClient.connected}`);
}).on('error', function (error) {
    console.log(error);
});

如果您有任何问题,请告诉我。感谢

答案 1 :(得分:0)

也许是因为当您尝试显示redisClient.connected时,您还没有连接(Javascript是Asynchrone)

我认为你应该直接在你的活动中记录这个:

redisClient.on('connect', function () {
    console.log('redis connected');
    console.log(`connected ${redisClient.connected}`);
}).on('error', function (error) {
    console.log(error);
});