Esempio n. 1
0
        /// <summary>
        /// 캐시 저장소에 특정 키의 값을 저장합니다.
        /// </summary>
        public static bool TryAdd(this IndexusProviderBase sharedCache, string key, object payload, DateTime?expires = null,
                                  IndexusMessage.CacheItemPriority?priority = null)
        {
            sharedCache.ShouldNotBeNull("sharedCache");
            key.ShouldNotBeWhiteSpace("key");

            return
                (With.TryFunction(() => {
                if (IsDebugEnabled)
                {
                    log.Debug("SharedCache 시스템에 캐시 정보를 저장합니다... key=[{0}], payload=[{1}]", key, payload);
                }

                sharedCache.Add(key,
                                payload,
                                expires.GetValueOrDefault(DateTime.Now.AddYears(1)),
                                priority.GetValueOrDefault(IndexusMessage.CacheItemPriority.Normal));

                if (IsDebugEnabled)
                {
                    log.Debug(
                        "SharedCache 시스템에 캐시 정보를 저장했습니다!!! key=[{0}], payload=[{1}], expires=[{2}], priority=[{3}]",
                        key, payload, expires, priority);
                }

                return true;
            },
                                  () => false));
        }
Esempio n. 2
0
        /// <summary>
        /// SharedCache에 특정 키의 값을 가져옵니다.
        /// </summary>
        /// <param name="sharedCache"></param>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool TryGet <T>(this IndexusProviderBase sharedCache, string key, out T value)
        {
            sharedCache.ShouldNotBeNull("sharedCache");
            key.ShouldNotBeWhiteSpace("key");

            if (IsDebugEnabled)
            {
                log.Debug("SharedCache 시스템에서 캐시 값을 로드합니다... key=[{0}]", key);
            }

            try {
                value = sharedCache.Get <T>(key);

                if (IsDebugEnabled)
                {
                    log.Debug("SharedCache 시스템에서 캐시 값을 로드했습니다. key=[{0}], value=[{1}]", key, value);
                }

                return(true);
            }
            catch {
                value = default(T);
            }
            return(false);
        }
Esempio n. 3
0
        /// <summary>
        /// SharedCache에 해당 키에 해당하는 값이 있으면 그 값을 반환하고, 없으면, <paramref name="valueFactory"/>로 값을 생성해서 값을 저장 후 그 값을 반환합니다.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sharedCache"></param>
        /// <param name="key"></param>
        /// <param name="valueFactory"></param>
        /// <returns></returns>
        public static T GetOrAdd <T>(this IndexusProviderBase sharedCache, string key, Func <T> valueFactory)
        {
            sharedCache.ShouldNotBeNull("sharedCache");
            key.ShouldNotBeWhiteSpace("key");
            valueFactory.ShouldNotBeNull("valueFactory");

            if (IsDebugEnabled)
            {
                log.Debug("SharedCache에서 Key[{0}]에 해당하는 값을 로드합니다.", key);
            }

            T result;

            if (sharedCache.TryGet <T>(key, out result))
            {
                return(result);
            }

            result = valueFactory();
            if (sharedCache.TryAdd(key, result))
            {
                return(result);
            }

            throw new InvalidOperationException(string.Format("ShardCached에 Key[{0}]에 해당하는 값을 저장하는데 실패했습니다.", key));
        }
Esempio n. 4
0
        /// <summary>
        /// 지정된 키에 해당하는 Item을 삭제합니다.
        /// </summary>
        /// <param name="sharedCache"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static bool TryRemove(this IndexusProviderBase sharedCache, string key)
        {
            sharedCache.ShouldNotBeNull("sharedCache");
            key.ShouldNotBeWhiteSpace("key");

            if (IsDebugEnabled)
            {
                log.Debug("SharedCache 시스템에서 해당 키의 값을 제거합니다... key=[{0}]", key);
            }

            try {
                sharedCache.Remove(key);
                return(true);
            }
            catch (Exception ex) {
                if (log.IsWarnEnabled)
                {
                    log.Warn("해당 키의 캐시 값을 삭제하는데 실패했습니다. 무시합니다^^ key=[{0}]", key);
                    log.Warn(ex);
                }
            }
            return(false);
        }