private void AddToCache(ICacheResult query, object result) { if (query != null) { if (query is ICacheResultWithRegion queryWithRegion) { _cacheManager.Add(new CacheItem <object>( query.CacheKey, queryWithRegion.Region, result, ExpirationMode.Absolute, query.CacheDuration)); _logger.LogDebug($"Query result added to cache with key {query.CacheKey} with region {queryWithRegion.Region} with duration {query.CacheDuration}"); } else { _cacheManager.Add(new CacheItem <object>( query.CacheKey, result, ExpirationMode.Absolute, query.CacheDuration)); _logger.LogDebug($"Query result added to cache with key {query.CacheKey} with duration {query.CacheDuration}"); } } }
public ICacheResult <T> GetOrSet <T>(string key, Func <T> func, int expiredTime = 3600) where T : class { ICacheResult <T> cacheResult = this.Get <T>(key); expiredTime = (expiredTime <= 0 ? 3600 : expiredTime); if ((cacheResult.Status != Status.Success ? true : !cacheResult.Success)) { try { T t = func(); this.Set <T>(key, t, expiredTime); cacheResult.Value = t; cacheResult.Success = true; cacheResult.Status = Status.Success; } catch (Exception exception) { cacheResult.Exception = exception; cacheResult.Success = false; cacheResult.Value = default(T); cacheResult.Status = Status.None; } } return(cacheResult); }
public ICacheResult <TResult> GetOrSet <TParam, TResult>(string key, Func <TParam, TResult> func, TParam param, int expiredTime = 3600) where TResult : class { ICacheResult <TResult> cacheResult = this.Get <TResult>(key); expiredTime = (expiredTime <= 0 ? 3600 : expiredTime); if ((cacheResult.Status != Status.Success ? true : !cacheResult.Success)) { try { TResult tResult = func(param); this.Set <TResult>(key, tResult, expiredTime); cacheResult.Value = tResult; cacheResult.Success = true; cacheResult.Status = Status.Success; } catch (Exception exception1) { Exception exception = exception1; cacheResult.Exception = exception; cacheResult.Success = false; cacheResult.Value = default(TResult); cacheResult.Status = Status.None; DebugUtil.CollectDebugInfo(string.Format("GetOrSet<TPara, TResult>('{0}'), Exception:{1}", key, exception.Message)); } } return(cacheResult); }
public ICacheResult Remove(string key) { ICacheResult cacheResult = new CacheResult() { Success = false, Status = Status.None }; ICacheResult cacheResult1 = cacheResult; try { cacheResult1.Success = this.db.KeyDelete(KeyGen.AttachPrefixToKey(key), 0); cacheResult1.Status = (cacheResult1.Success ? Status.Success : Status.None); } catch (Exception exception) { cacheResult1.Exception = exception; } return(cacheResult1); }
public static void Cache <TReturnType>(this Aspect aspect, ICache cacheResolver, string key, Action work, Func <TReturnType, TReturnType> foundInCache, int expiredTime = 3600) { ICacheResult <TReturnType> cacheResult = cacheResolver.Get <TReturnType>(key); if (cacheResult.Value != null) { TReturnType tReturnType = foundInCache(cacheResult.Value); if (tReturnType != null) { aspect.WorkDelegate = new Func <TReturnType>(() => tReturnType); } else { CacheAspectEx.GetResult <TReturnType>(aspect, cacheResolver, key, expiredTime); } } else { CacheAspectEx.GetResult <TReturnType>(aspect, cacheResolver, key, expiredTime); } work(); }
public ICacheResult <TResult> GetOrSet <TParam, TResult>(string key, Func <TParam, TResult> func, TParam param, int expiredTime = 3600) where TResult : class { ICacheResult <TResult> cacheResult = this.Get <TResult>(key); expiredTime = (expiredTime <= 0 ? 3600 : expiredTime); if ((cacheResult.Value == null || !cacheResult.Success ? true : cacheResult.Status != Status.Success)) { try { TResult tResult = func(param); this.Set <TResult>(key, tResult, expiredTime); cacheResult.Value = tResult; cacheResult.Success = true; } catch (Exception exception) { cacheResult.Exception = exception; cacheResult.Success = false; cacheResult.Value = default(TResult); } } return(cacheResult); }