Nodejs устанавливает время ожидания для запросов Redis - PullRequest
0 голосов
/ 04 марта 2019

Я написал простой сервис, использующий redis для хранения данных в памяти или извлечения с диска, а затем для сохранения в памяти и хочу установить тайм-аут для медленных запросов.Я надеюсь найти способ сделать запрос на получение с тайм-аутом, чтобы этот запрос не зависал.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 04 марта 2019

Итак, здесь вы можете сделать несколько вещей.Но сначала мне интересно, если вы пытаетесь преждевременной оптимизации.Redis в большинстве нормальных ситуаций работает невероятно быстро, и если вы обнаруживаете проблемы с производительностью на клиенте, это указывает на то, что у вас есть некоторые проблемы с вашими данными или как вы обрабатываете их в redisЭто должно быть исправлено в redis, в вашем клиенте ничего не нужно делать для обработки медленных запросов.

Итак, если вы видите случайные замедления, откуда они берутся?Это не обычная проблема с повторным отображением, и ее следует устранить вместо поиска исправления javascript.

Если вы все еще ищете исправление javascript, вы можете сделать что-то вроде этого:

const client = require('redis').createClient(...);

export async function asyncSetEx(key) {
  return new Promise((resolve, reject) => {
    const timer = setTimeout(() => {
      reject(new Error('Timed out'));
    });
    client.setEx(key, (res, err) => {
      if (err) {
        reject(err);
      } else {
        resolve(res);
      }
      clearTimeout(timer);
    });
  });
}

Хотя я бы рекомендовал обобщить это так, чтобы оно работало для любой функции redis с любым количеством параметров.

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