gpt4 book ai didi

c# - StackExchange.Redis - 如何在运行时更改配置?

转载 作者:IT王子 更新时间:2023-10-29 06:01:50 32 4
gpt4 key购买 nike

基本上,我有一个 "DON'T DO THIS"哨兵场景。因为 Sentinel 在这种情况下不安全,所以我实现了以下内容

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?

最佳答案

我查看了 source code图书馆,似乎没有所需的功能。有内部方法重新配置,但它会尝试从配置连接到其他服务器。

如果您的应用程序不是很大,我建议您进行重构。在 ConnectionMultiplexer 上创建一个包装器,将包装器传递给使用连接的对象。我们确实包装了 GetConnection 方法,它返回单个对象上的所有链接。所有需要连接的都会调用这个方法,不需要存储连接。在包装器 OnFailed 中订阅事件处理程序以创建与备份的新连接。

关于c# - StackExchange.Redis - 如何在运行时更改配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41684346/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com