首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceStack.Redis与RedisSentinelWorker和RedisPubSubServer的关系

ServiceStack.Redis与RedisSentinelWorker和RedisPubSubServer的关系
EN

Stack Overflow用户
提问于 2021-04-20 16:00:18
回答 1查看 42关注 0票数 1

描述:

我很好奇RedisSentinelWorker和RedisPubSubServer之间的关系是什么。

根据我所观察到的,即使有更多的哨兵主机可用,库最多可容纳1个活动的哨兵连接。这个哨兵连接被包装在RedisSentinelWorker中,它将RedisPubSubServer包装在引擎盖下面。

困扰我的是,RedisSentinelWorker和RedisPubSubServer可能实际上代表着与、两个不同的哨兵的连接。

以下是发生这种情况的原因:

代码语言:javascript
复制
var sentinel = new RedisSentinel(new[] {"localhost:26380", "localhost:26381", "localhost:26382"});
var manager = sentinel.Start();

当我们到达ServiceStack.Redis.RedisSentinelWorker.BeginListeningForConfigurationChanges时,监听应该从哨兵ServiceStack.Redis.RedisSentinelWorker.BeginListeningForConfigurationChanges开始。但是当您到达localhost:26381.时--我们用来建立pub/sub连接的一个实际哨兵实际上是ServiceStack.Redis.RedisPubSubServer.RunLoop

之所以发生这种情况,是因为我们传递给ClientsManager对象的RedisPubSubServer对象下面有循环机制。在建立pub/sub连接之前,我们实际上要调用ClientsManager两次。

  1. ServiceStack.Redis.RedisPubSubServer.Init内部获取服务器时间。它返回了localhost:26380.
  2. ServiceStack.Redis.RedisPubSubServer.RunLoop内部实际建立订阅。它现在返回localhost:26381.

,所以我的问题是:这是如何工作的,现在是有意的还是这是一个bug?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-20 16:31:55

RedisPubSubServer提供了用于处理Redis /Sub消息的托管Pub/Sub服务器

RedisSentinelWorker使用RedisPubSubServer侦听哨兵消息,它考虑连接到哨兵消息事件的任何可用活动哨兵主机,但我可以看到,只查看工作人员当前配置的哨兵主机是如何更直观的,因此我已经更改了此承诺中的行为,这将在下一个v5.11版本中可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67182389

复制
相关文章

相似问题

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