我们正在使用StackExchange.Redis客户端。我们还在使用Sentinel,它告诉我们Redis主服务器何时更改。既然我们已经创建了我们的连接(作为推荐的
我们看到几个选项:
我们目前的方式:
Lazy<IConnectionMultiplexer>
),我们想知道将连接信息更改为指向新的Redis主服务器的最佳方法是什么?我们看到几个选项:
- 当来自Sentinel的通知到达时,创建一个新的
Lazy<IConnectionMultiplexer>
- 更改现有连接多路复用器上的连接信息
我们目前的方式:
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);
}
);
}
接收通知后,我们只需重新调用CreateRedisConnection()
函数。
但这将完全重新创建连接多路复用器,而非采用更轻量级的方法(这可能不可行)。