Подтвердить что ты не робот

В чем преимущества Memcached по сравнению с системой .NET Cache?

Я видел некоторых людей в команде разработчиков, используя Memcached для кэширования результатов базы данных вместо встроенной системы .NET Framework Cache. Я не понимаю, почему они используют этот конкретный кеш.

Возможно, производительность лучше.

В любом случае существуют ли какие-либо реальные преимущества использования Memcached (а не собственного .NET-кэша)?

4b9b3361

Ответ 1

Memcached распространяется - это важно, что если у меня есть кластер серверов, обращающихся к кешу, все они по существу читают и записывают в один и тот же кеш. Встроенный кэш .Net не имеет этой функции (по крайней мере, я знаю, что ASP.Net это не так).

Поскольку каждая машина имеет свой собственный независимый кеш, это означает, что (например):

  • Если машина A вычисляет/считывает значение и помещает его в кеш, машина B не получает от этого никакой пользы. Каждая машина должна самостоятельно поддерживать и заполнять свой собственный кеш. Это также потенциально расходует пространство, поскольку одна и та же запись может присутствовать в кеше многих разных машин.
  • Если машина B аннулирует запись в кэш, машина A не будет знать об этом недействительности и может продолжать использовать устаревшие/устаревшие данные.

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

Недостатки

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

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

Ответ 2

Лучшее сравнение для Memcached на самом деле было бы Azure App Fabric Caching, которое было добавлено с .NET 4 и Azure. Это распределенное кластерное решение для кешей, предназначенное для кластерных и облачных вычислений. Тем не менее, Memcached также существует уже давно (2003-й, как мне кажется), так что он хорошо зарекомендовал себя и считается эталоном, по которому другие оцениваются. Memcached также портирован практически на каждый язык и может работать на серверах Linux или Windows. Azure Caching все еще относительно нова, поэтому не многие люди действительно использовали его еще.