Несколько MemoryCache в ASp .Net Core Web API - PullRequest
0 голосов
/ 05 февраля 2019

У меня ASP .Net Core 2.2.Веб API.Я хотел бы повысить производительность с помощью MemoryCache.Однако мне нужно кэшировать 2 разных типа, оба из которых используют целочисленные ключи.Один тип представляет собой список пользователей, а другой - список групп.

Теперь я добавляю службу MemoryCache в файл Startup.cs:

services.AddMemoryCache();

, а затемЯ использую внедрение зависимостей для доступа к этому кешу в двух разных местах (в Middleware и в сервисе, который я написал).

Из того, что я понимаю, оба этих кеша - один и тот же экземпляр.Поэтому, когда я добавляю в него своих разных пользователей и группы, поскольку у них обоих есть целочисленные ключи, возникают конфликты.Как я могу справиться с этим?Я думал об использовании двух кэшей - по одному для каждого типа - но (а) я не уверен, как это сделать, и (б) я где-то читал, что не рекомендуется использовать несколько кэшей.Есть идеи?

1 Ответ

0 голосов
/ 06 февраля 2019

Да, у меня была такая же проблема раньше, и я прибег к созданию расширенной версии MemoryCache, которая позволяет мне подключать различные «хранилища» .. Вы можете сделать это, просто упаковав данныевы вставляете в кеш в классе типа «метаданные».Я полагаю, что аналогично тому, как ServiceDescriptors оборачивают ваши регистрационные записи служб в DI?

Кроме того, в конкретном ответе на вопрос «Я подумал об использовании двух кэшей - по одному для каждого типа».Это где проблема возникнет, потому что я считаю, что IMemoryCache регистрируется как одиночный по умолчанию

...