基本上,我有一个"不要这样做"的Sentinel方案。因为在这种情况下Sentinel是不安全的,所以我实施了以下措施。
当我的主要连接断开时,我通过调用 (src as ConnectionMultiplexer).Configure(writer) 来更改配置,以便 ConnectionMultiplexer 可以使用新配置。然而,ConnectionMultiplexer 仍然继续使用旧的配置。
问题:在 ConnectionFailed 事件中如何更改 ConnectionMultiplexer.configuration?
var main = "192.168.XXX.YY:6379,abortConnect=false";
var backup = "192.168.XXX.YY:6379,abortConnect=false";
IConnectionMultiplexer redis = ConnectionMultiplexer.Connect(main);
redis.ConnectionFailed += (src, args) =>
{
if ((src as ConnectionMultiplexer).Configuration != backup) {
using (var writer = new StringWriter()) {
writer.Write(backup);
(src as ConnectionMultiplexer).Configure(writer);
/**
* Just for checking. It does not save
**/
(src as ConnectionMultiplexer).GetDatabase().StringSet("aaa", "bbb");
}
}
};
当我的主要连接断开时,我通过调用 (src as ConnectionMultiplexer).Configure(writer) 来更改配置,以便 ConnectionMultiplexer 可以使用新配置。然而,ConnectionMultiplexer 仍然继续使用旧的配置。
问题:在 ConnectionFailed 事件中如何更改 ConnectionMultiplexer.configuration?