我有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()回调
中都没有收到任何事件答案 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);
});