Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
C# 是否可以使用不同的连接字符串更新ConnectionMultiplexer,还是应该重新创建它?_C#_.net_Redis_.net Standard_Stackexchange.redis - Fatal编程技术网

C# 是否可以使用不同的连接字符串更新ConnectionMultiplexer,还是应该重新创建它?

C# 是否可以使用不同的连接字符串更新ConnectionMultiplexer,还是应该重新创建它?,c#,.net,redis,.net-standard,stackexchange.redis,C#,.net,Redis,.net Standard,Stackexchange.redis,我们正在使用StackExchange.Redis客户端。我们也在使用Sentinel,它告诉我们Redis主机何时更改。既然我们已经创建了连接(作为推荐的惰性),我们想知道将连接信息更改为现在指向新Redis主机的最佳方式是什么 我们看到了一些选择: 当通知来自Sentinel时,创建一个新的Lazy 更改现有连接多路复用器上的连接信息 2甚至可能吗 我们目前的做法: private Lazy<IConnectionMultiplexer> CreateRedisConne

我们正在使用StackExchange.Redis客户端。我们也在使用Sentinel,它告诉我们Redis主机何时更改。既然我们已经创建了连接(作为推荐的
惰性
),我们想知道将连接信息更改为现在指向新Redis主机的最佳方式是什么

我们看到了一些选择:

  • 当通知来自Sentinel时,创建一个新的
    Lazy
  • 更改现有连接多路复用器上的连接信息
  • 2甚至可能吗

    我们目前的做法:

        private Lazy<IConnectionMultiplexer> CreateRedisConnection()
        {
            return new Lazy<IConnectionMultiplexer>(
                () =>
                {
                    ConnectionMultiplexer multiplexer = null;
    
                        //Connect to Sentinel so we can find the redis master
                        ConnectionMultiplexer sentinelMultiplexer = ConnectionMultiplexer.Connect(SentinelOptions);
    
                        string masterNodeAddress = GetMasterNodeAddress(sentinelMultiplexer);
    
                        return ConnectionMultiplexer.Connect(masterNode);
                }
            );
        }
    
    private-Lazy-CreateRedisConnection()
    {
    返回新的懒惰者(
    () =>
    {
    ConnectionMultiplexer多路复用器=空;
    //连接到Sentinel,这样我们就可以找到redis主机了
    ConnectionMultiplexer sentinelMultiplexer=ConnectionMultiplexer.Connect(SentinelOptions);
    字符串masterNodeAddress=GetMasterNodeAddress(sentinelMultiplexer);
    返回ConnectionMultiplexer.Connect(主节点);
    }
    );
    }
    
    然后在收到通知后,我们只需重新调用
    CreateRedisConnection()

    但这完全重新创建了连接多路复用器,而不是更轻量级的方法(这可能是不可能的)