Memcached с Windows и .NET

83

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

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

Напуганный81
источник
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

Cherian
источник
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, чтобы предоставить данные скорости для использования.

Lomaxx
источник
Насколько мне известно, скорость все еще находится в стадии разработки, поэтому я пытаюсь поискать другую альтернативу. И это в 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.

bopapa_1979
источник
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.

Брент Мацель
источник