在我的缓存AddItem
和GetItem
方法中,我在继续操作之前检查与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/