Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/WM7S8.png" height="16" width="18" alt="" class="sponsor tag img">servicestack RedisSentineWorker和RedisPubSubServer之间的ServiceStack.Redis关系_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack.redis - Fatal编程技术网 servicestack RedisSentineWorker和RedisPubSubServer之间的ServiceStack.Redis关系,servicestack,servicestack.redis,servicestack,servicestack.redis" /> servicestack RedisSentineWorker和RedisPubSubServer之间的ServiceStack.Redis关系,servicestack,servicestack.redis,servicestack,servicestack.redis" />

servicestack RedisSentineWorker和RedisPubSubServer之间的ServiceStack.Redis关系

servicestack RedisSentineWorker和RedisPubSubServer之间的ServiceStack.Redis关系,servicestack,servicestack.redis,servicestack,servicestack.redis,说明: 我很好奇RedisSentineWorker和RedisPubSubServer之间的关系 从我观察到的情况来看,即使有更多的sentinel主机可用,该库最多只能容纳1个活动sentinel连接。该sentinel连接被包装在RedisSentineWorker中,它将RedisPubSubServer包装在引擎盖下 让我烦恼的是,RedisSentineWorker和RedisPubSubServer实际上可能表示到两个不同Sentinel的连接 这就是为什么会发生这种情况: var

说明:

我很好奇RedisSentineWorker和RedisPubSubServer之间的关系

从我观察到的情况来看,即使有更多的sentinel主机可用,该库最多只能容纳1个活动sentinel连接。该sentinel连接被包装在RedisSentineWorker中,它将RedisPubSubServer包装在引擎盖下

让我烦恼的是,RedisSentineWorker和RedisPubSubServer实际上可能表示到两个不同Sentinel的连接

这就是为什么会发生这种情况:

var sentinel = new RedisSentinel(new[] {"localhost:26380", "localhost:26381", "localhost:26382"});
var manager = sentinel.Start();
当我们到达
ServiceStack.Redis.RedissentineWorker.BeginListingforConfigurationChanges时
监听应该从sentinel本地主机26380开始。但当您访问ServiceStack.Redis.RedisPubSubServer.RunLoop时,我们用来建立发布/订阅连接的实际哨兵实际上是本地主机:26381

这是因为传递给RedisPubSubServer的
ClientsManager
对象下面有循环机制。在建立发布/订阅连接之前,我们实际上调用了
ClientsManager
两次

  • ServiceStack.Redis.RedisPubSubServer.Init的内部获取服务器时间。它返回了本地主机:26380
  • ServiceStack.Redis.RedisPubSubServer.RunLoop中实际建立订阅。它现在返回localhost:26381

  • 所以我的问题是:这是故意的还是一个bug?

    RedisPubSubServer
    提供了一个用于处理Redis发布/订阅消息的托管服务器

    RedisSentineWorker
    使用
    RedisPubSubServer
    侦听sentinel消息,它正在考虑为Sentinel消息事件连接到任何可用的活动Sentinel主机,但我可以看出,仅查看worker当前配置的Sentinel主机将更加直观,因此我已经更改了在下一个v5.11版本中可用的行为