예제 #1
0
        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());
        }