2881099 / csredis

.NET Core or .NET Framework 4.0+ client for Redis and Redis Sentinel (2.8) and Cluster. Includes both synchronous and asynchronous clients.
MIT License
2.01k stars 414 forks source link

怎么关闭RedisHelper的健康检查开关 ? #436

Open yangxu-sky opened 2 years ago

yangxu-sky commented 2 years ago

目前的现象是redis服务挂了后,会出现: 【127.0.0.2:6379/0】仍然不可用,下一次恢复检查时间:04/07/2022 23:45:58,错误:(Connect to server timeout) 这种警告,每10秒一次。怎么能彻底销毁这个客户端,不在进行健康检查。我尝试了 RedisHelper.Instance.Dispose() 和 RedisHelper.Initialization(null) 都不行。

yangxu-sky commented 2 years ago

@2881099 有时间帮忙解答下吗 ?非常感谢 ~

2881099 commented 2 years ago

RedisHelper.Instance.Dispose() 就行了,不会再提示:

【127.0.0.2:6379/0】仍然不可用,下一次恢复检查时间:04/07/2022 23:45:58,错误:(Connect to server timeout)
2881099 commented 2 years ago

你可以用以下代码测试,步骤:

1、打开 redis-server

2、运行测试代码(下面的代码)

3、连接按键盘 a,会打印 redis-server 时间

4、关闭 redis-server

5、按键盘 a,会报错”远程服务器断开了连接“,并且 RedisHelper 会进入定时检测,等待10-20秒

6、按键盘 回车

7、观察到定时检测已退出

8、按 ESC 退出

using CSRedis;

RedisHelper.Initialization(new CSRedisClient("127.0.0.1"));

Console.WriteLine("Hello, World!");

while (true)
{
    var readKey = Console.ReadKey();
    if (readKey.Key == ConsoleKey.Escape) break;
    if (readKey.Key == ConsoleKey.Enter)
    {
        RedisHelper.Instance.Dispose();
    }
    try
    {
        Console.WriteLine(RedisHelper.NodesServerManager.Time().First().value);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

Console.WriteLine("程序已结束");
yangxu-sky commented 2 years ago

好的,感谢,我在试试看