public async Task <IEnumerable <WorkspaceViewModel> > GetUserWorkspaces(string authUserId) { string cacheKey = CacheKeys.UserWorkspace(authUserId); IEnumerable <WorkspaceViewModel> workspaceViewModels = _memoryCache.Get <IEnumerable <WorkspaceViewModel> >(cacheKey); if (workspaceViewModels == null) { var userModel = await _userRepository.GetByAuthIdAsync(_dbContext, authUserId); // if the user has not added any workspaces yet, they may have no user record....so just return an empty enum if (userModel == null) { return(Enumerable.Empty <WorkspaceViewModel>()); } if (userModel.Workspaces == null || !userModel.Workspaces.Any()) { workspaceViewModels = Enumerable.Empty <WorkspaceViewModel>(); } else { var workspaceDbModels = await _workspaceRepository.GetManyByIdAsync(_dbContext, userModel.Workspaces); workspaceViewModels = _mapper.Map <IEnumerable <WorkspaceDbModel>, IEnumerable <WorkspaceViewModel> >(workspaceDbModels); } _memoryCache.Set(cacheKey, workspaceViewModels, TimeSpan.FromMinutes(15)); } return(workspaceViewModels); }
public string ReverseWords(string sentence) { if (sentence == null || sentence == string.Empty) { return(string.Empty); } var cacheKey = $"ReverseWords:{sentence}"; var splitWords = sentence.Split(' '); string result; if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result)) { result = Reverse(splitWords); _memoryCacheWrapper.Set(cacheKey, result); } return(result); }
/// <summary> /// Used Binet Formula since it's much faster than an ordinary one and also calculates values for negatives- http://mathworld.wolfram.com/BinetsFibonacciNumberFormula.html /// </summary> /// <param name="n"> The index (n) of the fibonacci sequence. </param> /// <returns> N-th number in the fibonacci sequence. </returns> public long GetFibonacci(long n) { var cacheKey = $"Fibonacci:{n}"; long result = 0; if (IsInputWithinRange(n)) { if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result)) { result = CalculateBinetFibonacci(n); _memoryCacheWrapper.Set(cacheKey, result); } return(result); } else { throw new WrongInputException("Provided wrong input. Only integers from -92 to 92 are accepted."); } }
public TriangleTypeEnum DetermineTriangleType(int sideA, int sideB, int sideC) { bool doesTriangleExist = DoesTriangleExist(sideA, sideB, sideC); if (!doesTriangleExist) { return(TriangleTypeEnum.Error); } var cacheKey = $"TriangleType:{sideA};{sideB};{sideC}"; TriangleTypeEnum result; if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result)) { result = CalculateTriangleType(sideA, sideB, sideC); _memoryCacheWrapper.Set(cacheKey, result); } return(result); }
public override void Insert(string key, object value, DateTime absoluteExpireTime) { cache.Set(key, value, TimeSpan.Zero, absoluteExpireTime - DateTime.Now); // HttpRuntime.Cache.Insert(key, value, new CacheDependency(_cacheDependFile), absoluteExpireTime, TimeSpan.Zero); }
public void InsertCache(string key, object value, int duration, string dependFileName) { cache.Set(key, value, TimeSpan.Zero, new TimeSpan(0, 0, duration)); }