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 стає досить доброзичливим на вікнах: northscale.com
Дастін,

1
+1 Дастіну. Ми використовуємо NorthScale і дуже зручний для вікон, з приємним інтерфейсом адміністратора (веб)
ram

2
@Dustin and @ram - Дастін, насолоджуйся своїм +1, але це питання було задано у 2008 р.
Джастін,

3
Хе. Це, мабуть, те, що є в тому 2008 році. Вибач за те. :)
Дастін,

Відповіді:


49

Навіщо потрібно запускати memcached на вікнах? Це дорога справа у виробничих умовах.

Якщо ваш код потрібно запустити в середовищі Windows, заведіть клієнт із memcached windows і поговоріть з машиною memcached на основі * nix.

У виробничому середовищі, що працює memcached на сервері 2003 або 2008, це означатиме, що ви отримуєте ліцензії на всі ці поля. Linux запропонує вам усі переваги OSS. TCO буде рости лінійно з memcached на Windows

Редагувати:

З моменту написання цієї відповіді минуло близько 1,5 року, і з того часу багато чого змінилося. Ви повинні звернути увагу, особливо коли хтось, як Дастін, коментує.
Отже, ось як ви можете отримати memcached у запущених вікнах. Завантажте memcached для вікон з Couchbase (раніше Northscale) .
Зазвичай, якщо ви плануєте запускати memcached на тій самій виробничій машині, ви хочете запустити його в обмеженій пам'яті, тобто визначити максимальну пам'ять, яку дозволено використовувати memcached.

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

Тут memcached працює з максимальним використанням 128 Мб. Ви не хочете, щоб memcached займав всю пам'ять на вашому веб-сервері.

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


2
Дякую за вашу відповідь, це те, що я шукаю.
Funky81

31
Як TCO зростає експоненціально в Windows? Вартість ліцензування лінійно зростає із збільшенням кількості машин. Але якщо взяти до уваги витрати на обладнання, стійку та електроенергію, контракти на підтримку та зарплату операторів, то, відверто кажучи, вартість ліцензування Windows є досить незначною.
Greg Beech

23
Тільки щоб додати спростування аргументу Черіана. Рушійним фактором у бажанні розміщувати у вікнах може бути досвід роботи з системою адміністратора. Наприклад, менші магазини, у яких немає ресурсів найняти адміністратора * nix, щоб просто відкрити пам'ять, може отримати велику користь від розміщення на платформі, з якою компанія вже добре розбирається (тобто Windows).
Джоель Мартінес

2
Я б підтримав цю відповідь, оскільки вона насправді не стосується нічого, що запитував Оператор, однак він сказав, що це саме те, що він шукав.
Кріс Марісіч

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. Редіс


12

Оскільки Velocity на той час ще не існував, я використав порти з пам'яттю для Windows для компанії, в якій я працюю, Skiviez. В основному існує лише забезпечення централізованого кешу для декількох робочих процесів на одній машині. Це працює вже близько 18 місяців на сайті електронної комерції, який бачить помірне використання (~ 18 500 переглядів на день). Клієнтом, якого я використовував, був Енім інтегрований як постачальник кешу для iBATIS.NET. Здається, цей клієнт працює досить добре; memcached клієнти також не дуже складні для початку.

Якби мені довелося це зробити ще раз, я б, мабуть, подивився на Velocity, якби я прагнув залишитися в Windows для свого розподіленого кешування. Але це працює зараз, тому я не збираюся це чіпати.

(Крім: З тих пір я більшість потреб у кеші заперечував, додаючи певні Cache*стовпці до ключових таблиць бази даних, які оновлюються запланованим завданням щовечора. Це призвело до значно меншої навантаження на ресурси навколо, починаючи з початкового потрапляє в час процесора, запитуючи базу даних до подальшого навантаження на доступність пам'яті, зберігаючи кешовані результати в memcached. Це також робить це набагато більш явним у коді, коли доступ до кешованої версії даних здійснюється порівняно з розрахованим на версія fly. Я впевнений, у вас є багато причин використовувати розподілений кеш, але завжди варто зробити спробу зробити крок назад і поставити під сумнів, чи він вам справді потрібен!)


Швидкість тепер є частиною AppFabric
Джон

7

я не знаю, що це за проект, над яким ви працюєте, але, можливо, ви хочете поглянути на проект Microsoft Velocity зі сторінки:

«Швидкість» - це розподілена в пам’яті платформа кешу додатків для розробки масштабованих високопродуктивних додатків. "Швидкість" може використовуватися для кешування будь-якого об'єкта загальної мови (CLR) і забезпечує доступ через прості API. Ключовими аспектами "Швидкості" є продуктивність розподіленого кешу, масштабованість та доступність.

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

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

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


Наскільки я знаю, швидкість все ще розробляється, тому я намагаюся шукати інші альтернативні варіанти. І це
запам'ятовується

після того, як я прочитав деякий час, швидкісна установка та обслуговування не є простими, оскільки
запам'ятовується

3
Використання стека LAMP? Ви не маєте на увазі "використання Linux", оскільки вам не потрібні Apache, MySQL або PHP для запуску memcached.
GateKiller

6

Швидкість трохи більше задіяна в адмініструванні, але вона набагато потужніша, ніж запам'ятовується. Я не проти пам’яті, ні в якому разі, це здорово. Але рухаючись вперед, нові проекти, що мають чисту базу .NET, божевільні, щоб не використовувати Velocity, навіть у теперішньому невипущеному стані.


6

подивіться на SharedCache . його відкритий код, простий у використанні та дуже надійний.

високоефективна розподілена пам’ять система кешування об’єктів, загальна за своєю суттю, але призначена для прискорення динамічної роботи в Інтернеті та / або перемоги в програмах, зменшуючи навантаження на базу даних. Не забудьте відвідати нас за адресою http://www.sharedcache.com


3

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

Зовсім не так. Стек LAMP (Linux, Apache, MySQL, PHP) не потрібний для запуску Memcached. В даний час я віддаю перевагу memcached перед швидкістю, поки швидкість не вийде з CTP. Я трохи погрався зі швидкістю, але виявив її занадто громіздкою. Я стежу за цією справою ПОЦІЛКУ, ти знаєш ... нехай це буде просто. Нічого простішого, ніж кешування ... Отримати (ключ) ... Покласти (ключ, значення) ... Знищити (Ключ).



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.