Работа с разпределен кеш - 5 vNext документация

Разпределеният кеш може да подобри производителността и мащабируемостта на приложение ASP.NET 5, особено ако е хоствано в облака или фермата. Тази статия описва как да работите с вградените абстракции на ASP.NET 5 и внедрени разпределени кеш памет.

Какво е разпределен кеш¶

Разпределеният кеш се използва от множество сървъри (вж. Основи на кеширането). Кешираната информация не се съхранява в паметта на един сървър и кешираните данни са достъпни за всички сървъри. Тук има няколко предимства:

  1. Кешираните данни са свързани между всички сървъри. Потребителите виждат един и същ резултат, без значение към кой сървър правят заявка.
  2. Рестартирането на сървъра не засяга кешираните данни. Отделни сървъри могат да бъдат премахнати или добавени, без това да повлияе на кеша.
  3. По-малко заявки се отправят към хранилището на сурови данни.

Когато се използва разпределен кеш на SQL Server, някои от тези предимства са валидни само при използване на конкретни екземпляри на база данни за кеша и сурови данни.

Разпределеният кеш може значително да подобри отзивчивостта на приложението, тъй като обикновено можем да получаваме данни от кеша по-бързо, отколкото от базата данни (или уеб услуга).

Конфигурацията на кеша зависи от изпълнението. Тази статия ще ви преведе как да настроите разпределен кеш в Redis и SQL Server. Независимо от избраната реализация, приложението работи с кеша, използвайки интерфейса IDistributedCache.

Интерфейсът IDistributedCache¶

Интерфейсът IDistributedCache включва както синхронни, така и асинхронни методи. Интерфейсът ви позволява да добавяте, извличате и премахвате елементи от кеша. Ето методите IDistributedCache:

Connect, ConnectAsync е оттеглено Get, GetAsync Приема низов ключ и извлича кеширания елемент като байт [], ако има такъв в кеша. Set, SetAsync Добавя елемент в кеша (като байт []) с помощта на низов ключ. Refresh, RefreshAsync Опреснява елемента, като нулира времето му на изчакване. Remove, RemoveAsync Премахва записа в кеша в зависимост от неговия ключ.

За да използвате IDistributedCache:

  1. Включете необходимите зависимости в project.json .
  2. Конфигурирайте конкретна реализация на IDistributedCache в метода Startup ConfigureServices и го добавете към контейнера.
  3. От класовете на контролера Middleware или MVC, изискайте екземпляр на IDistributedCache от конструктора. Екземплярът ще бъде осигурен чрез инжектиране на зависимост (DI).

Не е необходимо да използвате Singleton или Scoped за екземпляри IDistributedCache (поне за вградени реализации). Можете също така да го създадете, когато имате нужда (вместо да използвате инжектиране на зависимост), но тогава вашият код ще бъде по-труден за тестване и нарушаване на принципа на явна зависимост.