Я использую библиотеку redis-sentinel-client для управления подключением к Дозорная группа Redis. У меня проблема в том, что при подключении мне нужно обрабатывать записи, которые могут уже присутствовать или отсутствовать в магазине Redis.
Поскольку у меня два клиента (из-за того, что один является подписчиком), я не уверен, что это лучший способ организовать мои прослушиватели событий, чтобы я гарантировал, что оба клиента готовы, прежде чем пытаться выполнять какие-либо операции.
На данный момент имею следующее:
var sentinelSubscriberClient = RedisSentinel.createClient(opts);
var sentinelPublisherClient = RedisSentinel.createClient(opts);
sentinelSubscriberClient.on('ready', function redisSubscriberClientReady() {
sentinelPublisherClient.removeAllListeners('ready');
sentinelPublisherClient.on('ready', function () {
supportedChannels.forEach(function (channel) {
sentinelSubscriberClient.subscribe(channel);
});
// Includes reading + publishing via `sentinelPublisherClient`
processUnprocessed();
});
});
(есть также слушатели error
, но я удалил их, чтобы код было легче читать)
Этот текущий подход не работает, если клиент-издатель выдает ready
раньше клиента-подписчика. Мой вопрос заключается в том, как я могу организовать прослушиватели событий, чтобы я мог безопасно вызывать .subscribe()
на клиенте-подписчике и различные методы (.lrange()
, .publish()
и т. д.) прослушивателя издателя?
Спасибо!