. NET Кэш памяти ядра недоступен - PullRequest
0 голосов
/ 27 января 2020

Я использую IMemoryCache в. NET Core 2.2 приложении с приоритетом «NeverRemove». Этот кеш находится внутри класса, который определен как singleton в файле startup.cs. Я попытался настроить планировщик для запуска каждую ночь, чтобы обновить кэш, и это, кажется, не работает, но это еще одна проблема. Проблема в том, что, по крайней мере, один раз в день, когда я делаю запрос к кешируемому объекту, он недоступен и, следовательно, должен обновлять sh, что занимает около 20 секунд. Я не могу понять, почему кеш не доступен. После обновления кеш доступен нормально и ответ снова очень быстрый. Даже если запланированная задача не запущена и не обновляется кэш, я ожидаю, что кэш нужно будет сгенерировать только один раз, а затем сделать доступным для каждого последующего запроса. Любая помощь?

Установка кеша:

var cacheEntryOptions = new MemoryCacheEntryOptions()
                .SetPriority(CacheItemPriority.NeverRemove);

_cache.Set(CacheKeys.Approvers, approvers, cacheEntryOptions);

Получение кеша (тот же класс):

if (!_cache.TryGetValue(CacheKeys.Approvers, out cacheEntry))

Startup.cs

services.AddSingleton<IOracleHelper, OracleHelper>(); // class where cache is handled
services.AddSingleton<IHostedService, ScheduleTask>();

services.AddMemoryCache();
...