Exemplo n.º 1
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));
        }
Exemplo n.º 2
0
        /// <summary>
        /// SharedCache에 해당 키에 해당하는 값이 존재하는지 확인합니다.
        /// </summary>
        /// <param name="sharedCache"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static bool ExistsKey(this IndexusProviderBase sharedCache, string key)
        {
            object item;

            return(sharedCache.TryGet(key, out item));
        }