Memcached с Windows и .NET

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

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

Ответ 1

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

Если ваш код должен запускаться в среде Windows, запустите клиент memcached с Windows и поговорите с файловой машиной, основанной на * 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%) использования и сжатия CPU, что приносит большую ценность для всей сети по сравнению с использованием ЦП. Если вы слишком обеспокоены нормальным сжатием, попробуйте LZO

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 9

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

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

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

Загрузка Membase

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

Ответ 11

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