async Task UpdateBlogCache(CancellationToken stoppingToken) { if (stoppingToken.IsCancellationRequested) { return; } if (await _cache.GetStatusAsync() != CacheStatus.InitializationSucceeded) { await _cache.SetStatusAsync(CacheStatus.Initializing); } var dbBlogs = await _repo.GetBlogsAsync(); var cacheBlogs = await _cache.GetBlogsAsync(); var updatedBlogs = dbBlogs.Except(cacheBlogs.Item ?? new List <Blog>()); if (updatedBlogs.Count() > 0) { await _cache.AddBlogsAsync(updatedBlogs); _logger.LogInformation("{service} updated {count} blog(s)", nameof(BlogCacheProcessingService), updatedBlogs.Count()); } await UpdatePostCache(dbBlogs, stoppingToken); if (stoppingToken.IsCancellationRequested) { return; } await _cache.SetStatusAsync(CacheStatus.InitializationSucceeded); }
public async Task <IEnumerable <Blog> > GetBlogsAsync() { var blogs = await GetCachedValueAsync( () => _cache.GetBlogsAsync(), () => _repo.GetBlogsAsync() ); return(blogs ?? new List <Blog>()); }