public static TCacheItem[] MultiGet(string[] keys) { //divide keys into groups List <NodeGroup> groups = new List <NodeGroup>(); foreach (string key in keys) { string endPoint = NonPersistentNodesList.GetServerEndPoint(key); NodeGroup existGroup = null; foreach (NodeGroup group in groups) { if (group.EndPoint == endPoint) { existGroup = group; break; } } if (existGroup == null) { NodeGroup newGroup = new NodeGroup(endPoint); newGroup.AddKey(key); groups.Add(newGroup); } else { existGroup.AddKey(key); } } //get items List <TCacheItem> items = new List <TCacheItem>(keys.Length); foreach (NodeGroup group in groups) { TCacheItem[] ci = Proxy.MultiGet(group.EndPoint, group.Keys); items.AddRange(ci); } return(items.ToArray()); }