C# 是否可以使用不同的连接字符串更新ConnectionMultiplexer,还是应该重新创建它?
我们正在使用StackExchange.Redis客户端。我们也在使用Sentinel,它告诉我们Redis主机何时更改。既然我们已经创建了连接(作为推荐的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
惰性
),我们想知道将连接信息更改为现在指向新Redis主机的最佳方式是什么
我们看到了一些选择:
Lazy
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()
但这完全重新创建了连接多路复用器,而不是更轻量级的方法(这可能是不可能的)