Ответ 1
Memcached распространяется - это важно, что если у меня есть кластер серверов, обращающихся к кешу, все они по существу читают и записывают в один и тот же кеш. Встроенный кэш .Net не имеет этой функции (по крайней мере, я знаю, что ASP.Net это не так).
Поскольку каждая машина имеет свой собственный независимый кеш, это означает, что (например):
- Если машина A вычисляет/считывает значение и помещает его в кеш, машина B не получает от этого никакой пользы. Каждая машина должна самостоятельно поддерживать и заполнять свой собственный кеш. Это также потенциально расходует пространство, поскольку одна и та же запись может присутствовать в кеше многих разных машин.
- Если машина B аннулирует запись в кэш, машина A не будет знать об этом недействительности и может продолжать использовать устаревшие/устаревшие данные.
Memcached не имеет ни одной из этих проблем - после того, как запись помещается в кеш, все компьютеры в кластере могут извлекать один и тот же кешированный элемент. Недействительность записи в кеше делает ее недействительной для всех.
Недостатки
Если ваше приложение должно функционировать на кластере компьютеров, то очень вероятно, что вы извлечете выгоду из распределенного кеша, однако, если ваше приложение должно работать только на одной машине, то вы не получите никакой пользы от использования распределенный кеш и, вероятно, будет лучше использовать встроенный кэш .Net.
- Для доступа к кэшу memcached требуется межпроцессное/сетевое общение, которое будет иметь небольшое ограничение производительности по сравнению с кэшами .Net, которые находятся в процессе.
- Memcached работает как внешний процесс/услуга, а это означает, что вам нужно установить/запустить эту службу в рабочей среде. Опять же, кэши .Net не нуждаются в этом шаге, поскольку они размещены в процессе.