是“ConnectionMultiplexer.IsConnected”贵吗?

时间:2016-02-19 23:45:10

标签: redis stackexchange.redis

在我的缓存AddItemGetItem方法中,我在继续之前检查与redis的连接是否存在,ConnectionMultiplexer.IsConnected是一个昂贵的方法调用吗?或者我应该抓住异常并重新连接?

1 个答案:

答案 0 :(得分:3)

查看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;
    }
}

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

查看ServerEndPoint.IsConnected代码:

public bool IsConnected
{
    get
    {
        var tmp = interactive;
        return tmp != null && tmp.IsConnected;
    }
}

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

查看PhysicalBridge.IsConnected代码:

public bool IsConnected => state == (int)State.ConnectedEstablished;

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

所以看起来调用ConnectionMultiplexer.IsConnected属性的工作很少。