NodeJS не может подключиться к Redis - PullRequest
0 голосов
/ 15 мая 2018

У меня есть приложение nodejs, которому нужно подключиться к базе данных Redis.Однако при попытке подключиться к Redis всегда возвращается « false ».У меня запущен экземпляр Redis на той же машине, которая доступна из cli, также есть другое приложение 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 битов = 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 голосов
/ 15 мая 2018

Может быть, это потому, что когда вы пытаетесь отобразить redisClient.connected, вы еще не подключены (Javascript - это Asynchrone)

Я думаю, что вы должны регистрировать это прямо внутри вашего события, например:

redisClient.on('connect', function () {
    console.log('redis connected');
    console.log(`connected ${redisClient.connected}`);
}).on('error', function (error) {
    console.log(error);
});
0 голосов
/ 15 мая 2018

По сути, вы вызываете redisClient.on (), который является асинхронной функцией, и вы выводите подключенное состояние вне функции обратного вызова, которая определенно возвращает false, поскольку redis все еще не подключен. Я бы предложил поместить ваш код в функцию обратного вызова. Попробуйте код, приведенный ниже:

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

Дайте мне знать, если у вас есть какие-либо вопросы. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...