ioredis в nodejs ничего не делает, когда 'get' из AWS ElastiCache Redis - PullRequest
1 голос
/ 18 апреля 2020

Я выполняю следующий код в nodejs контейнере, размещенном в ECS. Это отлично работает локально с помощью Redis. В AWS он, кажется, соединяется (если я использую неверный адрес, он ошибается при соединении, поэтому я предполагаю, что он подключен). Когда я запускаю redis.get(, ничего не происходит. Я включил отладку для ioredis и получаю 1 сообщение при попытке получить:

2020-04-17T22:56:10.701Z ioredis:redis status[replica.virtual-happy-hour-redis.fnt3zc.usw2.cache.amazonaws.com:6379]: [empty] -> connecting
2020-04-17T22:56:11.042Z ioredis:redis status[10.200.0.37:6379]: connecting -> connect
2020-04-17T22:56:11.045Z ioredis:redis write command[10.200.0.37:6379]: 0 -> info([])
2020-04-17T23:02:02.627Z ioredis:redis queue command[10.200.0.37:6379]: 0 -> get([ 'friday' ])
# suspense is killing me....

Вот код

var Redis = require('ioredis'),

console.log('cache connecting to', CONFIG.CACHE_URL);
var redis = new Redis(CONFIG.CACHE_URL);
console.log('cache connected');

const getRoom = (roomName, callback) => {
  let room;
  console.log('getRoom', roomName); // this logs as expected, nothing after this does
  try {
    redis.get(roomName, (err, result) => {
      if (err) {
        console.log('get cache error', err);
      } else {
        if (result) {
          console.log('cache result', result);
          room = JSON.parse(result);
        } else {
          console.log('no cache', roomName);
          room = defaultRoom(roomName);
          redis.set(roomName, JSON.stringify(room));
        }
      }
      if (callback) callback(room);
      console.log('getRoom done');
    });
  } catch (ex) {
    console.log('getRoom error', ex.toString());
  }
};

Я подтвердил группы безопасности, ElastiCache находится в тот же VP C как мой контейнер ECS. Что я могу сделать, чтобы устранить эту проблему?

ОБНОВЛЕНИЕ Я поменял ioredis на redis, и это все еще происходит, нада ...

1 Ответ

1 голос
/ 18 апреля 2020

Исправлено! Я не знал, что я (новичок в AWS) настроил ElastiCache для шифрования в пути. Как только я установил токен аутентификации и использовал его с ioredis, он работает! Я вернулся в бизнес!

...