public async Task SetAsync <T>(CacheKeySettings keySettings, T value, CancellationToken cancellation = default) { var cacheEntryOptions = new MemoryCacheEntryOptions() .SetAbsoluteExpiration(keySettings.Expiry); _cache.Set <T>(keySettings.Key, value, cacheEntryOptions); }
public async Task SetAsync <T>(CacheKeySettings keySettings, T value, CancellationToken cancellation) { var options = new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = keySettings.Expiry }; var jsonString = JsonConvert.SerializeObject(value); await _cacheService.SetStringAsync(keySettings.Key, jsonString, options); }
public async Task <T> GetAsync <T>(CacheKeySettings keySettings, Func <Task <T> > GetValueFuncAsync, CancellationToken cancellation = default) { if (_cache.TryGetValue <T>(keySettings.Key, out T cachedValue)) { return(cachedValue); } T value = await GetValueFuncAsync(); await SetAsync(keySettings, value); return(value); }
public async Task <T> GetAsync <T>(CacheKeySettings keySettings, Func <Task <T> > GetValueFuncAsync, CancellationToken cancellation) { var stringValue = await _cacheService.GetStringAsync(keySettings.Key, cancellation); if (stringValue != null) { return(JsonConvert.DeserializeObject <T>(stringValue)); } T value = await GetValueFuncAsync(); await SetAsync(keySettings, value, cancellation); return(value); }