public async Task <T> GetOrSetAsync <T>(ScopedCacheKey cacheKey, Func <Task <T> > getItemCallback) where T : class { if (_memoryCache.Get(cacheKey) is not T item) { item = await getItemCallback(); SetItemToCache(cacheKey, item); } return(item); }
public T GetOrSet <T>(ScopedCacheKey cacheKey, Func <T> getItemCallback) where T : class { if (_memoryCache.Get(cacheKey) is not T item) { item = getItemCallback(); SetItemToCache(cacheKey, item); } return(item); }
private void SetItemToCache <T>(ScopedCacheKey scopedCacheKey, T item) { var options = new MemoryCacheEntryOptions().SetPriority(CacheItemPriority.Normal).SetSlidingExpiration(TimeSpan.FromSeconds(10)); _memoryCache.Set(scopedCacheKey, item, options); }