2
在我的緩存AddItem
和GetItem
方法中,我檢查在連接到redis之前是否還活着,是否是ConnectionMultiplexer.IsConnected
昂貴的方法調用?或者我應該在這種情況下發現異常並重新連接?是「ConnectionMultiplexer.IsConnected」昂貴嗎?
在我的緩存AddItem
和GetItem
方法中,我檢查在連接到redis之前是否還活着,是否是ConnectionMultiplexer.IsConnected
昂貴的方法調用?或者我應該在這種情況下發現異常並重新連接?是「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屬性看起來很少工作。