Итак, здесь вы можете сделать несколько вещей.Но сначала мне интересно, если вы пытаетесь преждевременной оптимизации.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 с любым количеством параметров.