Каковы преимущества Memcached по сравнению с системой .NET Cache? - PullRequest
12 голосов
/ 08 сентября 2011

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

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

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

Ответы [ 2 ]

24 голосов
/ 08 сентября 2011

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

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

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

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

Недостатки

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

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

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

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