首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何组织多个Redis客户端

如何组织多个Redis客户端
EN

Stack Overflow用户
提问于 2014-06-03 20:41:26
回答 1查看 172关注 0票数 0

我正在使用redis-sentinel-client库来管理一个到Redis前哨群组的连接。我遇到的问题是,在连接时,我需要处理Redis存储中可能已经存在也可能不存在的记录。

由于我有两个客户端(由于one is a subscriber的事实),我不确定组织事件侦听器的最佳方式,因此我保证两个客户端在尝试任何操作之前都已准备好。

目前我有以下几点:

代码语言:javascript
复制
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,则此当前方法会失败。我的问题是,如何组织事件侦听器,以便可以在订阅者客户端和各种方法(.lrange().publish()等)上安全地调用.subscribe()。发布者监听程序的?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-06-03 22:05:04

只需将客户端创建移动到就绪回调函数中。

代码语言:javascript
复制
var sentinelSubscriberClient = RedisSentinel.createClient(opts);
var sentinelPublisherClient = null;

sentinelSubscriberClient.on('ready', function redisSubscriberClientReady() {
    sentinelPublisherClient = RedisSentinel.createClient(opts);
    sentinelPublisherClient.on('ready', function () {
        supportedChannels.forEach(function (channel) {
            sentinelSubscriberClient.subscribe(channel);
        });

        // Includes reading + publishing via `sentinelPublisherClient`
        processUnprocessed();
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24015461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档