Как установить memcached на windows

Ускорьте свои веб-приложения с помощью Memcached

В эпоху веб-приложений для тысяч, миллионов или даже сотен миллионов пользователей производительность является очень важным аспектом, который часто определяет их успех или неудачу. Кэширование — один из основных методов оптимизации производительности приложений. В этой статье мы представим один из наиболее часто используемых инструментов кэширования на стороне сервера — memcached.

Наклейки:

Что такое кэширование

Принцип кэширования был изобретен и применен уже на заре разработки программного обеспечения. Основная идея очень проста — размещая информацию на более быстром носителе, вы добьетесь заметного улучшения производительности при доступе к этим данным. Соответствующая оптимизация алгоритмов приложения впоследствии уменьшит количество выборок с более медленных носителей.

Кэширование может быть реализовано в различных формах даже в повседневно используемых приложениях:

  • веб-браузер кэширует изображения, скрипты или целые страницы, загруженные с сервера, на диск клиента
  • текстовый редактор загружает содержимое всего файла с диска в память, благодаря чему может работать с ним быстрее
  • серверное приложение сохраняет данные, считанные из базы данных, в память для последующего ускорения доступа к ним

Что такое memcached

В этой статье представлено введение в кэширование на стороне сервера с использованием системы memcached с открытым исходным кодом. Мы покажем вам, как установить memcached в Linux и Windows, покажем основы использования и познакомим с библиотеками для выбранных языков программирования. Цель статьи — предоставить краткое руководство для разработчиков, не имеющих или имеющих очень небольшой опыт работы с memcached, а не охватить и объяснить все возможности, которыми обладает memcached.

Memcached — это бесплатно распространяемый продукт с открытым исходным кодом, цель которого — предоставить систему длякэширование данных в памяти с упором на высокую производительность, масштабируемость и развертывание в распределенных сценариях. Проект создавался во время разработки сервиса LiveJournal, и первоначальной целью было ускорить работу приложения за счет кэширования часто используемых данных из базы данных в память. Сегодня memcached является одним из наиболее широко используемых инструментов в своем роде и одним из основных столпов инфраструктуры крупнейших сервисов в Интернете, таких как Google/YouTube, Digg, Facebook, Wikipedia, Amazon и многих других.

Концепция memcached заключается в том, что memcached предоставляет хранилище ключей и значений, работающее как служба, отдельная от приложения. Независимость от приложения, работающего с memcached, — очень важный фактор, который позволяет, помимо прочего, например, просто развертывать другие экземпляры memcached-серверов. Таким образом, Memcached работает как отдельная служба/демон и ожидает входящих подключений через TCP-порт. Клиент, чаще всего веб-сервер, инициирует TCP-соединение с сервером memcached, отправляет команду на получение или отправку данных, обрабатывает ответ и отключается. Однако на практике клиентские библиотеки для memcached используют разные реализации так называемого пулы сокетов, чтобы исключить необходимость открывать отдельное соединение для каждого запроса к кешу.

Читайте также:  Как добавить панель управления nvidia windows 10

Установка (Linux, Windows)

Мы покажем базовую процедуру установки memcached-сервера на Linux и Windows с акцентом на тонкостях установки на платформе Windows.

Линукс

Linux, вероятно, является наиболее часто используемой системой, на которой развернут memcached, и имеет широкую поддержку готовых бинарных пакетов для различных дистрибутивов. Поскольку memcached зависит от пакета libevent, этот пакет должен присутствовать в системе, чтобы memcached работал успешно. В Debian или дистрибутивы с использованием пакетов .deb можно легко установить из готовых пакетов:

Таким образоммы установим memcached и необходимые зависимости (libevent). В Debian файл конфигурации находится в /etc/memcached.conf, где вы можете найти различные варианты запуска демона memcached и соответствующие комментарии, такие как порт, на котором работает memcached, максимальный объем памяти, который должен быть выделен memcached, и т.п. Для базовых экспериментов достаточно значений по умолчанию, поэтому в файле конфигурации ничего менять не нужно.

Если вы хотите установить путем компиляции из исходников, вам необходимо скачать архив с актуальной версией (1.4.4 на момент написания статьи) и после распаковки продолжить по стандартному ./configure && ; делать. При установке из исходников необходимо наличие в системе libevent (или libevent-dev в Debian).

Windows

Установка в Windows менее удобна, чем в Linux, главным образом потому, что существует несколько версий memcached, скомпилированных для Windows. Основное различие между ними заключается в их возрасте и количестве потенциальных проблем. В настоящее время лучшим выбором для Windows является сборка на сайте jellycan, которая представляет собой memcached 1.2.6 для Windows. Так что просто загрузите его, разархивируйте, запустите memcached.exe, и основная настройка Windows будет завершена.

В настоящее время основным недостатком Windows как платформы для развертывания memcached является то, что Windows не является платформой, для которой постоянно создается и тестируется memcache. В обсуждении на конференции memcached есть обзор проблем, которые мешали или препятствуют включению Windows в сборочную ферму и, следовательно, официальной поддержке memcached в Windows.

Еще одна «забавная» вещь, которую можно сделать с производственным развертыванием memcached в Windows, — запустить memcached в режиме службы/демона с настройками, отличными от предопределенных. Конфигурация memcached по умолчанию выделяет максимум 64 МБ.памяти, которой обычно не хватает для производства. Параметр «-d», который в Windows запускает memcached как службу, игнорирует дополнительные аргументы из командной строки, которые можно обойти с помощью утилиты «sc.exe» в Windows. Просто создайте файл install.bat со следующим содержимым:

Необходимо сохранить файл, либо изменить путь к memcached.exe и макс. размер выделенной оперативной памяти (ramSize) и запустить bat-файл. Это установит службу Windows memcached.

Проверка подключения к memcached

По умолчанию memcached принимает входящие соединения через TCP-порт 11211. После установки необходимо проверить, работает ли memcached и принимает ли соединения, например, с помощью telnet:

Читайте также:  Как устанавливать windows 10 вместо windows 7

Telnet не является стандартной частью Windows 2008 Server и должен быть установлен как дополнительный компонент. Но я рекомендую вместо этого использовать другой клиент для Windows, например. Замазка.

Основные операции – GET/SET

Даже прежде чем мы покажем практические примеры, удобно указать несколько фактов, связанных с memcached, которые необходимо иметь в виду:

  • максимальный размер одного элемента в memcached составляет 1 МБ. Это ограничение основано на конструкции memcached и существует в основном из-за оптимизации распределения оперативной памяти. На практике большинство клиентских библиотек поддерживают сжатие данных перед их записью в кеш, что в некоторых случаях может решить эту проблему. Memcached — неподходящее место для кэширования больших данных, больших изображений, документов и т. д. Memcached оптимизирован для хранения большого количества мелких элементов (текстов, объектов, результатов запросов к базе данных и т. д.). Несмотря на то, что memcached придерживается правила, которое гласит, что он вернет из кеша именно то, что было вставлено в кеш для данного ключа, необходимо учитывать это ограничение.
  • memcached не предоставляетмеханизм аутентификации или другой механизм безопасности. Memcached спроектирован так, чтобы работа с ним была максимально быстрой, а общение между клиентом и кешем не было отягощено ничем, кроме самих операций с кешем. На практике самый простой способ защитить экземпляры memcached от нежелательных подключений — это правило брандмауэра, разрешающее доступ к memcached только определенным серверам. Конечно, наиболее распространен сценарий, когда машины с memcached недоступны из внешней сети и только веб-серверы, взаимодействующие с кешем, знают внутренние IP-адреса memcached-серверов.
  • memcached — это не реляционная база данных, это хранилище ключей и значений. Например, невозможно получить все элементы из кэша с помощью операции «выбрать * из элементов». По умолчанию возможно получить из кеша только те значения, ключи которых нам известны.

Наиболее часто выполняемые операции с memcached — это чтение из кэша (GET) и запись в кэш (SET). Обычный сценарий заключается в том, что если в приложении есть логика, которая всегда извлекает данные из базы данных, эту логику можно изменить, чтобы сначала запросить memcached на наличие этих данных. Если memcached возвращает их, приложение продолжает работать с этими данными и не должно запрашивать более медленную базу данных. Если элемента еще нет в кэше (что может быть по разным причинам, о которых мы расскажем ниже), мы получаем данные из базы данных и записываем их в кэш. При следующем запросе этих данных приложение загрузит их только из кеша, то есть быстрее.

Выражается программно, пока у нас есть код, подобный следующему:

После интеграции с memcached это будет выглядеть так:

Это все, что вам нужно для базовой работы с memcached.

Как упоминалось выше, есть несколько причин, по которым элемент не может быть кэширован:

  • элемент еще не зарегистрированв кеш по заданному ключу
  • срок действия элемента истек. Memcached поддерживает автоматическое истечение срока действия, что очень полезно в тех случаях, когда мы хотим автоматически удалять элемент из кеша по истечении определенного времени. Установка срока действия на 0 при записи элемента в кеш приведет к тому, что memcached не будет автоматически отбрасывать элемент через определенное время, т. е. он будет находиться в кеше до тех пор, пока клиент явно не удалит его.
  • элемент удален
  • служба memcached была перезапущена или была отправлена ​​команда ‘flush_all’ для сброса всех записей
Читайте также:  Как удалить несколько сетей windows 7

Поскольку memcached является очень распространенным решением, он также имеет соответствующую мощную поддержку клиентских библиотек для ряда языков программирования, фреймворков и сред. Для Python, Java и .NET я рекомендую использовать следующие библиотеки.

Питон

Пакет python-memcached, легко доступный в Linux с помощью apt-get или easy_install. Python-memcached также можно использовать с платформой Django при использовании memcached в качестве внутреннего кэша.

Ява

spymemcached — это библиотека, разработанная одним из ключевых разработчиков сервера memcached. Это также хороший выбор, если вы используете Hibernate, потому что кеш второго уровня hibernate-memcached использует клиент spymemcached. В любом случае, Spymemcached — лучший выбор, даже если вы не используете Hibernate.

.NET

enyim.com Memcached Client — лучший выбор для приложений .NET, который находится в активной разработке. Но если вы используете NHibernate с memcached, по умолчанию NHibernate работает с другим — более старым клиентом, который больше не находится в активной разработке. Поэтому, если вы не используете NHibernate, лучшим выбором будет клиент enyim.

Дополнительные ссылки и ресурсы

Помимо основных операций получения/установки, memcached содержит множество других интересных функций. Подробное описание всех возможных функций, команди параметры можно найти в документации по протоколу, например, статистику, операции увеличения/уменьшения, множественный выбор элементов, использование протокола UDP и т. д. Вокруг memcached существует большое сообщество и много материала. Несколько ссылок, с которых удобно начать:

Заключение

При правильном использовании Memcached может решить определенные проблемы с масштабированием и производительностью приложений, которые обычно связаны с частыми операциями с более медленными устройствами (дисками, базами данных). Хотя это один из инструментов, который может «ускорить работу», необходимо помнить, что основным правилом оптимизации является оптимизация приложения везде, где это возможно. В конечном счете, ни один инструмент не может решить проблемы неоптимально написанных алгоритмов или плохо написанных запросов к базе данных. Но если вы уже освоили этот этап «самооптимизации» и считаете кэширование подходящим инструментом, memcached — очень хороший выбор, поскольку это стабильное, широко распространенное решение с поддержкой распределенного развертывания и отличным сообществом.

Статья представляет собой перевод английского оригинала Getting Started with Memcached, опубликованного в авторском блоге Maddemcode. Перевод с английского автором оригинальной статьи.

Юзеф Шевчик

Автор зарабатывает на жизнь разработкой программного обеспечения и любит экспериментировать с новыми и заново открытыми технологиями.

Поделиться с друзьями
ОС советы