在我的缓存AddItemGetItem方法中,我在继续操作之前检查与redis的连接是否有效,ConnectionMultiplexer.IsConnected是一个昂贵的方法调用吗?还是应该在这种情况下捕获异常并重新连接?

最佳答案

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属性的工作。

关于redis - "ConnectionMultiplexer.IsConnected"很贵吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35517135/

10-12 00:01