2009-10-01 4 views
1

У меня есть список из Order объектов.C# ASP.NET - Кэш Список объектов, которые необходимо искать/сортировать?

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

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

ответ

1

По-моему, вы должны сделать что-то вроде этого

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

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

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

Смежные вопросы