Запросите IMemoryCache
в конструкторе вашего контроллера / службы.
Сначала добавьте в свой запуск, чтобы зарегистрировать службы кэширования:
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
... запросите его вконструктор ...
private IMemoryCache _cache;
public HomeController(IMemoryCache memoryCache)
{
_cache = memoryCache;
}
... и использовать его ...
public IActionResult CacheTryGetValueSet()
{
DateTime cacheEntry;
// Look for cache key.
if (!_cache.TryGetValue(CacheKeys.Entry, out cacheEntry))
{
// Key not in cache, so get data.
cacheEntry = DateTime.Now;
// Set cache options.
var cacheEntryOptions = new MemoryCacheEntryOptions()
// Keep in cache for this time, reset time if accessed.
.SetSlidingExpiration(TimeSpan.FromSeconds(3));
// Save data in cache.
_cache.Set(CacheKeys.Entry, cacheEntry, cacheEntryOptions);
}
return View("Cache", cacheEntry);
}
Более подробную информацию можно найти в кэше Microsoft в ASP.NET Core подробности.Весь приведенный выше код взят с этой страницы.
Кэш-память, представленная здесь, представляет собой синглтон - один экземпляр кеша будет существовать на протяжении всего времени работы приложения.Но будьте внимательны, как только процесс завершится, все будет очищено.
Что касается вопроса "ну что, если мой кэш не имеет значения в тот момент, когда я его запрашиваю?"
Э-э, добро пожаловать в многопоточный код.Это просто факт жизни, промахи кеша - вещь.Это будет "" "" более "" "надежно, потому что весь цикл находится в памяти, но вы все равно должны принять это во внимание.