/// <summary> /// 获取多个对象 /// </summary> /// <param name="objIds"></param> /// <returns></returns> public override IDictionary <string, object> GetObjects(IList <string> objIds) { lock (lockObject) { var objIdList = new List <string>(objIds); objIdList = objIdList.ConvertAll <string>(objId => GetInputKey(objId)); objIdList = (from item in objIdList select item).Distinct().ToList(); IDictionary <string, object> cacheData = new Dictionary <string, object>(); var data = dataCache.MultiGet(objIdList); if (data != null) { foreach (KeyValuePair <string, byte[]> kv in data) { if (kv.Value != null) { cacheData.Add(GetOutputKey(kv.Key), Serialization.BinaryDeSerialize <object>(kv.Value)); } else { cacheData.Add(GetOutputKey(kv.Key), null); } } } return(cacheData); } }
/// <summary> /// 여러 개의 항목을 캐시에서 가져옵니다. /// </summary> /// <param name="sharedCache"></param> /// <param name="keys"></param> /// <param name="items"></param> /// <returns></returns> public static bool TryMultiGet(this IndexusProviderBase sharedCache, IEnumerable <string> keys, out IDictionary <string, byte[]> items) { items = null; if (keys.IsEmptySequence()) { return(false); } try { if (IsDebugEnabled) { log.Debug("캐시 시스템에서 다중 정보를 로드합니다... items key=[{0}]", keys.CollectionToString()); } items = sharedCache.MultiGet(keys.ToList()); if (IsDebugEnabled) { log.Debug("캐시 시스템에 다중 정보를 로드했습니다!!!"); } return(true); } catch (Exception ex) { if (log.IsWarnEnabled) { log.Warn("캐시에 여러 값을 로드하는데 실패했습니다. 예외는 무시합니다^^"); log.Warn(ex); } } return(false); }