Memcached с Windows и .NET


83

Кто-нибудь уже внедрил memcached для производственного использования в среде Windows? Поскольку я читал много блогов, не рекомендуется запускать memcached в Windows, особенно для производственного использования, например, для запуска memcached в Windows .

И еще одно: какой клиент memcached подходит для использования с C # и .net 3.5? Я нашел много альтернатив, таких как Memcached Providers @ Codeplex , Beitmemcached и memcached provider @ Sourceforge.


6
Вы указываете на сообщение в блоге 2008 года. Memcached в последнее время становится довольно дружелюбным к Windows: northscale.com
— Дастин

1
+1 Дастину. Мы использовали NorthScale и довольно дружелюбны к Windows, с приятным интерфейсом администратора (веб)
— ram

2
@Dustin и @ram - Дастин, наслаждайся твоей +1, но этот вопрос был задан в 2008 году.
— Джастин

3
Хех. Это должно быть то, что есть в 2008 году. Прости за это. :)
— Дастин

Ответы:


49

Зачем вам нужно запускать memcached в Windows? В производственной среде это дорогое удовольствие.

Если ваш код должен работать в среде Windows, получите клиент memcached для Windows и поговорите с машиной memcached на базе * nix.

В производственной среде, где запущен memcached на Server 2003 или 2008, это означает, что вы получаете лицензии на все эти устройства. Linux предложит вам все преимущества OSS. TCO будет линейно расти с использованием memcached в Windows

Редактировать:

Прошло около 1,5 лет с тех пор, как я написал этот ответ, и с тех пор многое изменилось. Вы должны обращать внимание, особенно когда кто-то вроде Дастина комментирует.
Итак, вот как вы можете запустить memcached в Windows. Загрузите memcached для Windows с сайта Couchbase (ранее Northscale) .
Обычно, если вы планируете запускать memcached на той же производственной машине, вам нужно запускать его в ограниченной памяти, то есть определить максимальную память, которую memcached может использовать.

c: \ Program Files \ memcached> memcached.exe -m 128.

Здесь memcached работает с максимальным использованием 128 МБ. Вы не хотите, чтобы memcached занимал всю память на вашем веб-сервере.

В тот момент, когда вы решили масштабировать memcached, вам нужно будет учесть то, что я сказал ранее. Дополнительно сжимайте свои значения в комбинациях ключевых значений. Веб-серверы обычно потребляют очень мало ЦП (2-3%), а сжатие приносит большую пользу сети по сравнению с использованием ЦП. Если вас слишком беспокоит нормальное сжатие, попробуйте LZO


2
Спасибо за ответ, это то, что я ищу.
— Funky81

31
Как в Windows экспоненциально растет совокупная стоимость владения? Стоимость лицензирования растет линейно с количеством машин. Но если принять во внимание затраты на оборудование, место в стойке и электроэнергию, контракты на поддержку и зарплату операторов, то, честно говоря, стоимость лицензирования Windows весьма незначительна.
— Грег Бич,

23
Просто чтобы добавить опровержение аргументу Чериана. Движущим фактором при желании разместить в Windows может быть опыт системного администратора. Например, небольшие магазины, у которых нет ресурсов, чтобы нанять администратора * nix только для того, чтобы запустить модуль memcached, могут получить большую выгоду от размещения на платформе, с которой компания уже хорошо разбирается (например, Windows).
— Joel Martinez

2
Я бы DV этот ответ, так как он действительно не касается ничего, что спрашивал ОП, однако он сказал, что это именно то, что он искал.
— Крис Марисич,

11
Проголосовали против, потому что это не касается фактического вопроса. Если это решило проблему ОП, возможно, вопрос стоит переписать?
— sh-beta

21

Я удивлен, что никто здесь еще не упомянул Redis - это одно из самых многофункциональных и быстрых (110 000 SET в секунду на Linux-боксе начального уровня) хранилищ данных типа ключ-значение с поддержкой богатой структуры данных для строк, наборы, списки, отсортированные наборы и хеши.

Хотя Windows не является официально поддерживаемой платформой, она отлично работает под Windows при прохождении всех тестов. У меня есть сборки Windows (с использованием Cygwin), доступные здесь: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows

Он также имеет клиентские привязки почти для всех используемых сегодня языков программирования. Я поддерживаю богатый клиент C # Redis с открытым исходным кодом с нативной поддержкой API для любого типа C # POCO, поддержкой транзакций и потокобезопасными диспетчерами клиентов, которые готовы к добавлению в любой IOC по адресу: https://github.com/ServiceStack/ServiceStack. Redis


12

Поскольку в то время Velocity не существовало, я использовал порт memcached для Windows для компании Skiviez, в которой я работаю. В основном он существует только для обеспечения централизованного кеша для нескольких рабочих процессов на одном компьютере. Он работает нормально около 18 месяцев на сайте электронной коммерции, который используется довольно скромно (~ 18 500 обращений в день). Клиент, который я использовал, был Enyim, интегрированным в качестве поставщика кеша для iBATIS.NET. Этот клиент, кажется, работает достаточно хорошо; Клиенты memcached тоже не очень сложные для начала.

Если бы мне пришлось сделать это снова, я бы, вероятно, посмотрел на Velocity, если бы я решил остаться в Windows для моего решения распределенного кэширования. Но сейчас работает, так что трогать не буду.

(Кроме того: с тех пор я свел на нет большую часть потребности в кэше, добавив определенные Cache*столбцы в ключевые таблицы в базе данных, которые обновляются с помощью запланированной задачи каждый вечер. Это привело к гораздо меньшей нагрузке на все ресурсы по сравнению с первоначальным сокращает процессорное время, запрашивая базу данных для последующей нагрузки на доступность памяти, сохраняя кешированные результаты в memcached. Это также сделало это более явным в коде, когда осуществляется доступ к кэшированной версии данных по сравнению с вычисляемой на- версия на лету. Я уверен, что у вас есть много причин использовать распределенный кеш, но всегда стоит сделать шаг назад и спросить, действительно ли он вам нужен!)


Velocity теперь является частью AppFabric
— Джон

7

Я не знаю, над каким проектом вы работаете, но вы можете взглянуть на проект Microsoft Velocity со страницы:

«Velocity» - это распределенная платформа кэширования приложений в памяти для разработки масштабируемых высокопроизводительных приложений. «Скорость» может использоваться для кэширования любого объекта среды CLR и обеспечивает доступ через простые API. Ключевыми аспектами «скорости» являются производительность распределенного кэша, масштабируемость и доступность.

Я видел пару демонстраций, и похоже, что у них действительно хорошая интеграция с .NET framework.

Проблема с клиентским API заключается в том, что вам все равно нужно иметь экземпляр memcached, работающий в другом ящике, где-то предпочтительно, как вы отметили, с использованием стека LAMP. Использование скорости означает, что вы по-прежнему будете работать в одном и том же стеке, и будет более тесная интеграция с платформой .net.

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


Насколько мне известно, скорость все еще находится в стадии разработки, поэтому я пытаюсь поискать другую альтернативу. И это в memcached
— Funky81,

после того, как я прочитал некоторое время, установка и обслуживание скорости не так просты, как memcached
— Funky81

3
Используете стек LAMP? Разве вы не имеете в виду «использование Linux», поскольку вам не нужны Apache, MySQL или PHP для запуска memcached.
— GateKiller

6

Управление скоростью немного сложнее, но она намного мощнее, чем memcached. Я не против memcached, нисколько, это здорово. Но продвигаясь вперед, новые проекты, основанные на чистом .NET, безумны, если не используют Velocity, даже в его текущем невыпущенном состоянии.


6

взгляните на SharedCache . его открытый исходный код, простой в использовании и очень надежный.

высокопроизводительная система кэширования объектов с распределенной памятью, общая по своей природе, но предназначенная для ускорения динамических веб-приложений и / или выигрышных приложений за счет уменьшения нагрузки на базу данных. Не забудьте посетить нас по адресу http://www.sharedcache.com


3

Проблема с клиентским API заключается в том, что вам все равно нужно иметь экземпляр memcached, работающий в другом ящике, где-то предпочтительно, как вы отметили, с использованием стека LAMP.

Совсем не так. Стек LAMP (Linux, Apache, MySQL, PHP) не требуется для запуска Memcached. В настоящее время я предпочитаю memcached скорости, пока скорость не выйдет за пределы CTP. Я немного поигрался со скоростью, но нашел ее слишком громоздкой. Я слежу за всей этой штукой с KISS, понимаете ... будь проще. Нет ничего проще, чем кеширование ... Получить (ключ) ... Поместить (ключ, значение) ... Уничтожить (ключ).



1

Я знаю, что немного опаздываю на вечеринку, и уже есть масса хороших ответов.

Мы очень успешно использовали Membase на Windows Server. Он на 100% совместим с Memcached и имеет удобный установщик с графическим интерфейсом и сервер веб-конфигурации. Управлять им очень легко.

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

Загрузки Membase

На этой же странице есть установка Windows только для Memcached, если вам не нужны какие-либо дополнительные функции в Membase.


1

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

Я мог бы реализовать memcached для производственного использования в среде Windows.

http://www.codeproject.com/Articles/96698/Implementing-Distributed-Caching-using-Memcached http://www.deanhume.com/Home/BlogPost/object-caching----net-4/37 http : //latebound.blogspot.com/2008/10/using-memcached-from-c.html


0

Если вы заинтересованы в запуске клиента memcached в Windows, тогда есть два дополнительных сервера с открытым исходным кодом, которые могут выполнить эту работу. Оба реализуют стандартный протокол сервера memcached и написаны на Java, поэтому работают в Windows.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.