Сам кеширующий объект в IMemoryCache в ASP. NET Core MVC с Entity Framework - PullRequest
0 голосов
/ 15 апреля 2020

В ASP. NET Core MVC приложении, которое я использую IMemoryCache в ConfigureServices():

services.AddMemoryCache();

В контроллере у меня изначально был такой код:

// List<> of POCOs:
var myLines = await _context.MyEntity.Where(somecondition).ToListAsync();

и я изменил его на:

// List<> of POCOs:
var myLines = await
    _cache.GetOrCreateAsync("mykey",async entry => {
        return
            await _context.MyEntity.Where(somecondition).ToListAsync();
    });

Это хорошо работает.

Но мне интересно, все равно это плохая практика или нет.

Это проблема с кэшированием прикрепленных POCO?

1 Ответ

1 голос
/ 16 апреля 2020

Это очень простое c использование кэша памяти, оно может удовлетворить некоторые базовые c требования, но, пожалуйста, рассмотрите ниже senario

  1. Ваш POCO изменен кем-то другим, как бы вы кеш это знаешь? Вам понадобится некоторая задача syn c для синхронизации c данных кеша и базы данных
  2. Ваше приложение будет перенесено в веб-ферму, кэш-память memery работает только на одной машине, запрос перенаправляется на другой машине не будет кеша. В этом сенарио вам понадобится внешний кэш, такой как Redis, или даже создать свой собственный распределенный кеш.

Так что это действительно зависит от того, что вам нужно, если оно достаточно простое, чем это подход это хорошая практика. В противном случае вам необходимо принять во внимание вышеупомянутые 2 senario, поскольку эти 2 являются наиболее распространенной проблемой для решения кеша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...