C # ASP.NET - кешировать список объектов, которые необходимо найти / отсортировать? - PullRequest
1 голос
/ 01 октября 2009

У меня есть список Order объектов.

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

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть запросы LINQ к моей базе данных MSSQL, которые выполняют сортировку и поиск - но как мне это сделать, если я храню их в кэше? Я не хочу дублировать код (СУХОЙ!).

1 Ответ

1 голос
/ 01 октября 2009

На мой взгляд, вы должны сделать что-то подобное

  • Иметь общий метод для загрузки объектов в память и кэшировать их как список / словарь ... все, что подходит вам в одноэлементном классе BL
  • Ваши запросы Linq, выполняющие сортировку / поиск, должны выполняться в коллекции кэшированных объектов в вашем классе BL, а не напрямую в вашей базе данных MySQL.

Таким образом, в случае, когда первый вызов выполнен, ваша кэшированная коллекция запрашивается, но, поскольку она все еще пуста, вы идете и выбираете все объекты (конечно, это зависит от объема данных), а затем, когда в памяти ваши запросы LINQ выполняются на нем.
Последующие вызовы не попадут в БД, а только в кешированную коллекцию.

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

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