“ConnectionMultiplexer.IsConnected”贵吗?

Nea*_*hal 7 redis stackexchange.redis

在我的缓存AddItemGetItem方法中,我在继续之前检查到 redis 的连接是否处于活动状态,是ConnectionMultiplexer.IsConnected一个昂贵的方法调用吗?或者我应该在这种情况下捕获异常并重新连接?

Kob*_*net 8

查看ConnectionMultiplexer.IsConnected代码:

public bool IsConnected
{
    get
    {
        var tmp = serverSnapshot;
        for (int i = 0; i < tmp.Length; i++)
            if (tmp[i].IsConnected) return true;
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎这里完成的所有工作都是通过服务器端点来查看是否至少连接了一个服务器端点。

查看ServerEndPoint.IsConnected代码:

public bool IsConnected
{
    get
    {
        var tmp = interactive;
        return tmp != null && tmp.IsConnected;
    }
}
Run Code Online (Sandbox Code Playgroud)

此处完成的所有工作都返回交互式(PhysicalBridge 类型)IsConnected 值。

查看PhysicalBridge.IsConnected代码:

public bool IsConnected => state == (int)State.ConnectedEstablished;
Run Code Online (Sandbox Code Playgroud)

您可以看到这里完成的所有工作是返回两个 int 是否相等。

因此,调用 ConnectionMultiplexer.IsConnected 属性似乎完成了很少的工作。