IIS6 ASP.NET 2.0 Application Cache - параметры хранения данных и производительность для больших объемов данных - PullRequest
3 голосов
/ 07 июля 2011

На сайте ASP.NET 2.0 на IIS6 я хотел бы хранить пары ключ / значение в кэше приложений. Каждый ключ всегда будет строкой длиной 5 символов, а каждое значение - строкой длиной 15–250 символов.

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

В этом сценарии я предполагаю / требую, чтобы размер кэша достигал примерно 1000 записей, при которых он станет стабильным и редко (если вообще будет) изменяться, как описано выше.

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

(1) Использовать 1 объект Cache, содержащий SortedDictionary<string, string> или

(2) позволяет создавать 1000 объектов Cache и использовать сам Cache в качестве словаря или

(3) Это просто не имеет значения для количества рассматриваемых данных. В каком случае ваш ответ изменится, если количество записей увеличится до 10000 или 100000?

Большое спасибо.

1 Ответ

2 голосов
/ 07 июля 2011

1000 не большой объем данных; это будет работать нормально, но вам нужно будет подумать о синхронизации, если эти данные распределяются между запросами. В действительности, lock для доступа к Dictionary<string,string>, вероятно, подходит, хотя вы можете быть более мелкозернистым, если вам нужно.

Тем не менее, встроенный веб-кеш (HttpContext.Cache) также подойдет к этой же проблеме и имеет встроенную защиту всех потоков.

Не используйте SortedDictionary<,>, если только вы не заботитесь о том, чтобы данные были отсортированы. Я так не думаю.

По мере увеличения чисел я буду более склонен думать о таких магазинах, как redis / memcached, с локальной памятью в качестве локального ярлыка.

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