Лучший способ кеширования хранить словарь в C #

2

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

  • 0
    Каков контекст приложения? Код клиента? Сбалансированный по нагрузке веб-сервер? Кэширование имеет разные лучшие решения в разных случаях.
  • 0
    Это веб-приложение на одном сервере. Я думаю, что лучший вариант с точки зрения того, когда, при запуске приложения.
Теги:
dictionary
caching

3 ответа

1

Храните словарь в XML файле, используя формат, который выглядит примерно так и читает его, когда вам нужно переписывать

<nodes>
<node id="1">Some Nav Data</node>
</nodes>

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

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

0

Сколько поселений вы говорите? Зачем вам нужен кеш, а не просто использовать словарь в памяти с фоновым потоком для периодической перезагрузки?

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

  • 0
    Там будет около 70 категорий с их идентификаторами
  • 0
    По сути, при поиске в результатах будет набор идентификаторов, относящихся к критериям поиска. Эти идентификаторы будут названием категории. Мне нужно сопоставить идентификатор с именем, чтобы я мог написать дружественный URL. Аналогично, поступая другим способом, входящий запрос должен сопоставить имя обратно. Это должно быть доступно для жизни приложения, и не будет меняться очень часто, то есть дни, даже недели.
Показать ещё 1 комментарий
0

Кэширование - это супер большая тема! Вы можете использовать локальный кеш, если находитесь в веб-проекте. Вы можете использовать HttpContext.Current.Cache, если вы находитесь в среде Windows (хотя вам не нужен кеш в приложении Windows). Если вы используете более одного веб-сервера, вы можете посмотреть на возможности MemCached или MemCached Win32. Если вы не возражаете использовать новые материалы, вы также можете взглянуть на Velocity (что является ответом MS на превосходство MemCache в течение последних нескольких лет на арене кеширования).

Вот несколько сообщений, которые могут вас заинтересовать:

System.Web.Caching и блокирование кэширования корпоративной библиотеки

Запуск веб-сайта Asp.net с сервером MS SQL. Когда мне следует беспокоиться о масштабируемости?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню