public async Task <T> GetOrSetAsync <T>(string key, TimeSpan?timeToLive, Func <Task <T> > createAsync) { var item = await this.GetAsync <CacheWrapper <T> >(key).ConfigureAwait(false); if (item != null) { return(item.Value); } var value = await createAsync().ConfigureAwait(false); await this.SetAsync(key, CacheWrapper <T> .For(value), timeToLive).ConfigureAwait(false); return(value); }
public async Task SetAsync <T>(string key, T value, TimeSpan?timeToLive) { await this.RawSetAsync(key, CacheWrapper <T> .For(value), timeToLive).ConfigureAwait(false); }