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