Memcached с Windows и .NET - PullRequest
       52

Memcached с Windows и .NET

83 голосов
/ 09 декабря 2008

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

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

Ответы [ 11 ]

49 голосов
/ 09 декабря 2008

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

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

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

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

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

C: \ Program Файлы \ memcached> memcached.exe -m 128.

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

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

21 голосов
/ 31 марта 2010

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

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

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

12 голосов
/ 11 июля 2009

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

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

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

7 голосов
/ 09 декабря 2008

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

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

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

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

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

6 голосов
/ 11 июля 2009

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

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

6 голосов
/ 29 декабря 2008

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

3 голосов
/ 25 февраля 2009

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

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

2 голосов
1 голос
/ 16 августа 2012

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

Я мог бы реализовать 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

1 голос
/ 23 сентября 2011

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

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

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

Загрузки Membase

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

...