Установка и настройка memcached в 1с-битрикс

Введение

Разные утилиты, которые используются для кэширования (например, Memcached), могут повышать производительность базы данных путем временного сохранения информации в памяти. Обычно это касается тех записей, которые вы либо недавно запрашивали, либо запрашиваете часто. В этом случае при использовании кэширования уменьшается количество прямых запросов к базе данных.

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

Поэтому в этом руководстве будет рассказано не только о том, как установить, но и как защитить сервер с Memcached.

Использование Memcached с Rails 3

Rails 3 абстрагировал систему кэширования, чтобы вы могли свободно изменять клиента по своему желанию. В Ruby предпочтительным клиентом Memcached является Dalli.

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

Простейшее использование кеша — это методы / для извлечения данных:

Наиболее распространенным шаблоном для кеширования Rails является использование . Он попытается извлечь ключ (в данном случае ) и вернуть значение. Если ключ не существует, он выполнит переданный блок и сохранит результат по данному ключу.

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

Здесь мы используем эпоху как часть ключа, которая дает время истечения ключа. Итак, если время изменится, мы получим пустой кэш в уже существующем кэше профиля и запишем новый. В этом случае нам нужно будет обновить время пользователя, когда будет обновлен профиль. Это так же просто, как добавление:

Теперь у вас есть профили с автоматическим изменением срока действия кеша без каких-либо проблем с получением старых данных, когда пользователь обновляется. Это похоже на волшебство!

Настройка Memcached

Теперь, когда сервер установлен, его надо поднастроить. Это не сложно и не займёт много времени

Закрываем Memcached от доступа извне

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

  1. Открываем конфигурационный файл
    vi /etc/memcached.conf
  2. Добавляем строку
    -l 127.0.0.1
  3. Перезагружаем memcached

    service memcached restart

    или

    /etc/init.d/memcached restart

И снова проверяем

netstat -tap | grep memcached

В итоге мы должны увидеть подобное

tcp 0  0 localhost.localdo:11211 *:*  LISTEN     13092/memcached

Также, после всех изменений не забудьте перезапустить Apache

service apache2 restart

Увеличиваем объём рабочей памяти Memcached

По умолчанию, в Memcached отведено на использование 64 мегабайта оперативной памяти. Я увеличу до 1024, вы исходите из параметров вашего сервера

  1. Открываем конфигурационный файл
    vi /etc/memcached.conf
  2. Находим значение
    -m 64
  3. Меняем его на
    -m 1024
  4. Перезапускаем memcached
    service memcached restart

Хранение сессий PHP в Memcached

Если одним сервером или кластером Memcached пользуются несколько разных сайтов, то они могут перехватывать сессии друг друга и получать доступ к аккаунтам их пользователей, что представляет собой потенциальную опасность

Можно ускорить php, перенеся хранилище сессий из hdd в оперативную память с помощью memcached

Вы должны знать, какое расширение php вы используете, или . Между ними есть разница, а уточнить, что стоит у вас, можно с помощью phpinfo(), тут есть тонкость в настройках, будьте внимательны

Способ для расширения memcache

  1. Открыть
  2. Добавить
    session.save_handler = memcache
    session.save_path = "tcp://127.0.0.1:11211"
  3. Перезагрузить apache
    service apache2 restart

Способ для расширения memcacheD

  1. Открыть
  2. Добавить
    session.save_handler = memcached
    session.save_path = "127.0.0.1:11211"
  3. Перезагрузить apache
    service apache2 restart

Проверка phpinfo

Теперь нужно проверить, что имеем на выходе. Для этого, открываем страницу с phpinfo() и ищем в коде в столбце с локальными значениями. В значении должно быть или . Если значения не поменялись, смотрите конфиг домена в Апаче (например тут: ), а ищем

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

  php_value session.save_handler "memcache"
  php_value session.save_path "tcp://127.0.0.1:11211"
# memcached default config file
# 2003 - Jay Bonci <>
# This configuration file is read by the start-memcached script provided as
# part of the Debian GNU/Linux distribution.

# Run memcached as a daemon. This command is implied, and is not needed for the
# daemon to run. See the README.Debian that comes with this package for more
# information.
-d

# Log memcached's output to /var/log/memcached
logfile /var/log/memcached.log

# Be verbose
# -v

# Be even more verbose (print client commands as well)
# -vv

# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
# Объём памяти в мегабайтах, который отведён для кеширования. По умолчанию, 64 мегабайта.
#-m 64
-m 1024

# Порт, на котором будет висеть Memcached, по умолчанию 11211
-p 11211

# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u memcache

# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
-l 127.0.0.1

# Limit the number of simultaneous incoming connections. The daemon default is 1024
#
# -c 1024

# Lock down all paged memory. Consult with the README and homepage before you do this
# -k

# Return error when memory is exhausted (rather than removing items)
# -M

# Maximize core file limit
# -r

Решение 2. Установите Couchbase вместо Memcached

Возможно, вы не слышали об этом, но Couchbase это JSONхранилище документов, но также имеет интерфейс хранилища ключей / значений в памяти, который совместим с Memcached, Это означает, что вы можете установить Couchbase для Windows и настроить его так же, как Memcached. Круто то, что он поставляется с классным графическим интерфейсом и обычным установщиком Windows.

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

  1. Перейти к Couchbase страница загрузки
  2. Выберите установщик Windows
  3. Запустите установочный файл

В конце процесса установки браузер откроется по адресу HTTP: // локальный: 8091 / index.html и вы пройдете первоначальную настройку. Важный экран:

В целях Memcached вы можете игнорировать настройки дискового хранилища, так как вы создадите пул памяти. Просто оставьте все как есть.

Выберите «запустить новый кластер» и выберите объем оперативной памяти, который вы хотите использовать. Подойдет что-нибудь между 64 и 512 МБ. Это действительно ваше дело, и вы можете изменить это позже. Нажмите Next и проигнорируйте Sample buckets. Нажмите Далее еще раз.

Это еще один важный экран. Здесь вы создадите пул памяти. Убедитесь, что вы выбрали тип корзины Memcached. Для эмуляции Memcached вы, вероятно, не Нужно включить реплики. Но вы должны включить команду Flush. Нажмите Next.

Вы можете отказаться от уведомлений и регистрации, если хотите. Нажмите кнопку «Далее.

Завершающим этапом является установка вашего пароля. Нажмите кнопку «Далее. И вуаля! Теперь у вас есть работающий узел Memcached, за которым вы можете следить с помощью классного графического интерфейса, в котором вы можете просматривать содержимое кэша (полезно для отладки!)

Порт по умолчанию для блоков Memcached — это стандарт 11211. Вы можете изменить это в Data Buckets> > Редактировать

Настройка размеров чанка

В Memcache настройка размеров чанков и их количества производится с помощью фактора роста. Это соотношение размера большего чанка к меньшему:

Так при факторе роста в 1.25 будет такое распределение классов:

slab class   1: chunk size    104 perslab 10082
slab class   2: chunk size    136 perslab  7710
slab class   3: chunk size    176 perslab  5957
slab class   4: chunk size    224 perslab  4681
...

## будет 10082 чанка размером 104 байта в слабе, 7710 чанков размером 136 байт и т.п.

Параметры Memcache

Для настройки используется два параметра во время запуска сервера Memcached:

  • Фактор роста
  • Минимальный размер чанка (с которого начинается прирост)

Для установки размера минимального чанка используется параметр “-n”:

memcached **-n 16**

## Устанавливаем минимальный размер чанка – 16 байт

Этот параметр следует уменьшить до 16, если у Вас в кэше есть мелкие объекты, например:

  • счетчики
  • флаги
  • короткие строчные значения (имейлы, пароли, хеши и т.п.)

Второй параметр – это фактор роста. Он задается опцией “-f”. Уменьшение этой опции до 1.05 позволит создать больше слабклассов, а следовательно более эффективно выделять память под объекты различного размера. Чем больше классов, тем больше выбор из чанков, а значит больше вероятности подобрать чанк нужного размера:

memcached -n 16 **-f 1.05**

## Снизим фактор роста до 1.05, и таким образом увеличим количество слабклассов

Си

Библиотека libmemcached на данный момент активно развивается и представляется наиболее подходящим выбором при работе с Си и PHP. Также, в комплекте с самой клиентской библиотекой поставляются дополнительные утилиты для работы с memcached, позволяющие просматривать, устанавливать, удалять значения в кэше memcached. Кстати, удивляет, что набор утилит идет не с серверной частью, а с клиентской библиотекой.

man libmemcached
man libmemcached_examples

C библиотекой поставляются описание несложных примеров использования. За более интересными же способами применения имеет смысл заглянуть в исходные тексты утилит, благо все идет вместе.

Рекомендую обратить внимание на собранные утилиты. Наверняка многие из них станут верными помощниками при разработке приложений

  • — выдает информацию о сервере memcached
  • — выдает значение по ключу
  • — удаляет значение по ключу
  • — выдает список ключей

Для начала посмотрим, что скажет сервер memcached, запущенный нами немного ранее в режиме выдачи сообщений. Запросим статистику сервера при помощи утилиты memstat:

memstat --servers localhost

 Listing 1 Server
 Server: localhost (11211)
 pid: 14534
  uptime: 1950
 time: 1247390264
 version: 1.4.0
 pointer_size: 32
 rusage_user: 0.0
 rusage_system: 0.0
 curr_items: 0
 total_items: 0
 bytes: 0
 curr_connections: 10
 total_connections: 11
 connection_structures: 11
 cmd_get: 0
 cmd_set: 0
 get_hits: 0
 get_misses: 0
 evictions: 0
 bytes_read: 0
 bytes_written: 0
 limit_maxbytes: 67108864
 threads: 5

Получили статистику — следовательно memcached функционирует и откликается на запросы.

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

memcached предоставляет следующий набор основных функций (их, конечно, больше, но здесь приведены основные):

  • set — занести в кэш пару ключ-значение
  • add — занести в кэш значение при условии, что значения с таким ключом в кэше еще нет
  • replace — обновляет кэш при условии, что значение с таким ключом в кэше уже есть
  • get — получает значение из кэша по указанному ключу

Пример программы на C

Файл mc.c:

#include "stdio.h"
#include "string.h"
#include "memcached.h"

int main( void )
{
    char *key = "key";
    char *value = "value";
    uint32_t flags = ;
    size_t length = ;
    char *value2 = NULL;
    memcached_return rc;

    // 1. создать структуру для работы с кэшем
    memcached_st *memc = memcached_create(NULL);

    // 2. указать сервер с которым будем работать
    memcached_server_add(memc,"localhost",11211);

    // 3. занести пару ключ-значение в кэш
    rc = memcached_set(memc, key, strlen(key), value, strlen(value)+1, (time_t), flags);

    if (rc == MEMCACHED_SUCCESS) {
    } else {
        // обработать ошибку
    }

    // 4. получить значение
    value2 = memcached_get (memc, key, strlen(key),     & length, & flags, & rc);
    if (rc == MEMCACHED_SUCCESS) {
        printf("%s\n", value2);
        free(value2);
    } else {
        // обработать ошибку
    }

    // 5. высвободить структуру
    memcached_free(memc);
    return ;
}

Программа состоит из 5 основных операций и в особых комментариях не нуждается. Разве что можно отметить, что в пункте 2 можно добавлять много серверов, в случае использования распределенной системы.

Компилируем, возможно придется явно указать пути к библиотекам:

gcc -Wall -o mc mc.c -I/usr/local/include/libmemcached/ -lmemcached

Запускаем:

./mc
 value

Видим требуемое значение — должно быть, заработало!

Для уточнения деталей, смотрим сообщения на сервере memcached:

<32 new auto-negotiating client connection
32: Client using the ascii protocol
32 STORED
32 sending key key
>32 END
<32 quit
<32 connection closed.

В данном примере представлены следующие события: подключение клиента, установка пары ключ-значение, чтение данных по ключу и отключение клиента.

Посмотрим статистику на сервере:

memstat --servers localhost
 Listing 1 Server
 Server: localhost (11211)
 pid: 14534
 uptime: 4659
 time: 1247392973
 version: 1.4.0
 pointer_size: 32
 rusage_user: 0.0
 rusage_system: 0.0
 curr_items: 1
 total_items: 1
 bytes: 58
 curr_connections: 10
 total_connections: 13
 connection_structures: 11
 cmd_get: 1
 cmd_set: 1
 get_hits: 1
 get_misses: 0
 evictions: 0
 bytes_read: 58
 bytes_written: 58
 limit_maxbytes: 67108864
 threads: 5

Следующие две строчки показывают, что в кэше появилось значение:

curr_items: 1
total_items: 1

Посмотрим на данное значение:

memcat --servers localhost key
 value

Итак, приложение, использующее memcached — готово.

Объекты WordPress и memcached

Воспользоваться возможностями memcached в WordPress для кеширования объектов можно с помощью плагина. Самый простой и при этом очень эффективный — это Memcached Object Cache. Среди его авторов — Райан Борэн, один из разработчиков ядра WordPress.

Для работы данного плагина вам потребуется расширение memcache (без d на конце) для PHP.

Не перепутайте PHP расширение memcache и PHP расширение memcached! Они оба работают с сервером memcached, но для плагина Memcached Object Cache нужен именно memcache (без d).

Как установить расширение PHP memcache

В свежих версиях Debian и Ubuntu это расширение можно установить так:

apt install php-memcache

После чего необходимо перезагрузить PHP.

В случае Apache перезапускаем веб-сервер и делаем это так:

service apache2 restart

Если используете fpm-формат взаимодействия между PHP и вебсервером NGINX, то перезагружать надо не веб-сервер, а саму эту службу, например так:

service php7.4-fpm restart

где php7.4-fpm — имя вашей службы и зависит от версии интерпретатора php и у вас это имя может быть другим.

Установка плагина Memcached Object Cache

Memcached Object Cache является не типичным плагином, а так называемым дроп-ином (вкраплением), который выполняется на самом раннем этапе загрузки ядра WordPress, и который не возможно отключить через панель администрирования.

Чтобы установить плагин Memcached Object Cache, вам необходимо разместить в директории wp-content файл object-cache.php из архива плагина, после чего плагин автоматически становится активным.

Установить файл object-cache.php в директорию wp-content можно с помощью FTP-клиента или используя файловый менеджер вашего хостинга.

Если на данном этапе при посещении вашего сайта вы увидели «белый экран смерти», то причин может быть несколько:

  • Не установлен или не запущен сервер Memcached;
  • Не работает модуль memcache для PHP, не установлен или не перезапущен PHP после установки;
  • Нет доступа к серверу, например он сконфигурирован на другой порт.

Как настроить плагин Memcached Object Cache

Интерфейса для конфигурации плагина Memcached Object Cache нет. Для того, чтобы он заработал, вам необходимо внести изменения в файл wp-config.php добавив в него строку:

define( 'WP_CACHE_KEY_SALT', '...long random string...' );

где «…long random string…» — ваша уникальная строка со случайным набором символов.

Как отключить кеширование бъектов в WordPress с помощью memcached

Чтобы отключить кэширование объектов в Memcached достаточно удалить или переименовать файл object-cache.php в директории wp-content. Это действие не удалит данные на сервере.

SLAB

SLAB – это алгоритм выделения памяти. Он был создан для ее эффективного использования. Вся память делится на отдельные куски – слабы (slab). Каждый слаб содержит более мелкие куски – чанки (chunk). Когда в память нужно что-то сохранить, мы находим пустой слаб, в нем пустой чанк и записываем туда данные. Когда нужно будет сохранить что-то еще, мы переходим к следующему чанку и сохраняем данные в него.

Представьте, что вся память – это дом. Слабы – это квартиры, а чанки – это комнаты. Это эффективно, т.к. нам не нужно постоянно искать по всей памяти какое-то свободное место. Мы просто заполняем комнату, потом переходим к следующей комнате и т.п. И так пока вся память не будет заполнена.

Пример использования Memcache

Данный раздел покажет, как создать простой PHP-скрипт для использования Memcache, чтобы извлечь значение, которое первоначально находилось в таблице MySQL.

Следующие комнды создают пользователя MySQL (который может получить доступ к соответствующей базе данных), таблицу для запросов, а также внесут в новую таблицу одно значение, которое понадобится для проведения проверки.

Итак, войдите в mysql (mysql -u root –p) и выполните команды:

Выйдите из MySQL и создайте скрипт-файл memcache:

Чтобы создать php-скрипт, выполните следующие действия (пример готового скрипта можно найти ниже):

  1. Для начала создайте новое постоянное соединение с memcache на порту memcache по умолчанию (это порт 11211).
  1. Затем нужно подключиться к новой базе данных mysql через ранее созданного пользователя:
  1. Теперь создайте запрос, а также укажите ключ для него:

Сначала скрипт ищет ответ на запрос в кэше . Если результат не обнаружен, скрипт перенаправляет запрос к исходной базе данных. После того как ответ на запрос был найден в исходной БД, скрипт сохраняет результат в кэше, используя команду set (эта команда сохраняет запрос и позволяет пользователю указать время в секундах, на протяжении которого данные должны оставаться в кэше).

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

В целом, готовый скрипт имеет следующий вид:

При запуске из командной строки скрипт выведет следующий результат:

Что такое Memcache?

Memcache – это система, которая позволяет ускорить работу виртуальных частных серверов за счет кэширования информации сервера. Данная программа позволяет выделить определенное количество RAM сервера для кэширования недавно запрошенных данных в течение определенного количества времени. Если данные вновь запрашиваются, Memcache ускоряет процесс извлечения этой информации.

Требования

Для выполнения данного руководства нужно иметь привилегии root (инструкции можно найти в руководстве «Добавление и удаление пользователей на Ubuntu 12.04 и CentOS 6»). Также рекомендуется обновить список пакетов, чтобы убедиться, что все загруженные пакеты находятся в актуальном состоянии.

Кроме того, нужно установить на сервер MySQL и PHP.

Memcached и СУБД

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

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

Установка

На нашем локальном хостинге, PHP уже установлен и имеет версию 5.4.27. Нам потребуются дополнительная информация о PHP. Те, кто организовал локальный хостинг по статье из этого блога, могут просто кликнуть на ссылке phpinfo().

 

Те, кто делал по-другому, могут в корневом каталоге своего веб-сервера создать файл phpinfo.php с кодом:

<?php phpinfo(); ?> 

А затем обратиться к нему. Например, так: http://localhost/phpinfo.php.

В результате увидим следующее.

 

Нас интересует следующая информация:

  • Версия Visual C++, под которой скомпилирован PHP — VC9
  • Версия подключения PHP — потокобезопасно (thread safe) или нет (non thread safe)

Скачиваем файл php_memcache-3.0.8-5.4-ts-vc9-x86.zip. Извлекаем из архива одну библиотечку php_memcache.dll и кладём её в каталог расширений PHP. В нашем случае это C:\xampp\php\ext, а в общем случае смотрим значение параметра «extension_dir» в php.ini. Затем в конец раздела «Dynamic Extensions» файла php.ini дописываем:

extension=php_memcache.dll

Сохраняем, закрываем и переходим к установке службы «memcached» в Windows. Для начала нужно знать разрядность операционной системы.

Если у Вас 32-х битная Windows, то скачиваем Memcached-121-win32.zip, если 64-х битная, то скачиваем memcached-win64-1.4.4-14.zip. Извлекаем из архива все файлы (из там три) в любую директорию. Допустим это будет c:\memcached 

Запускаем командную строку с правами администратора: 

 Переходим в директорию с программой:

cd \memcashed

Устанавливаем службу:

memcached -d install

 

Запускаем утилиту управления службами Windows:

Находим в списке служб интересующую нас – memcashed.

 

Щелкаем на неё правой кнопкой мыши и жмём Запустить. После того как служба memcached запустилась, надо перезапустить веб-сервер Apache, а затем ещё раз посмотреть информацию о PHP.

Если среди фиолетовых таблиц вы видите memcache, значит всё настроено правильно.

 

Использование Memcached в Drupal

Начало работы с Memcached в Drupal начинается с установки расширения PHP для Memcached.

Вам нужно будет перезапустить приложение, чтобы все изменения вступили в силу.

Как и ожидалось, вы получите стандартные getter и setter с модулем Memcached. Одно из предостережений заключается в том, что возвращает строку кэша, поэтому вам нужно получить доступ к сериализованным данным внутри нее.

И точно так же у вас есть кэширование в Drupal. Вы можете создавать пользовательские функции для репликации таких функций, как в Rails. Немного проектирования и вы можете получить надежное решение для кеширования, которое перенесет отзывчивость вашего приложения на новый уровень.

Полностью управляемый сервис Memcached на AWS

Amazon предлагает полностью управляемый сервис Memcached – Amazon ElastiCache for Memcached.

  • Простота настройки, использования и масштабирования развертываний Memcached в облаке. Автоматическое обнаружение и замена отказавших узлов.
  • Недорогие аппаратные ресурсы с возможностью масштабирования.
  • Использование клиента ElastiCache для кластера Memcached с возможностью Auto Discovery для ускорения разработки приложений благодаря упрощенному управлению узлами.

Начните работу с Amazon ElastiCache for Memcached на уровне бесплатного пользования AWS за три простых шага.

Регистрация

Получите доступ к
уровню бесплатного пользования Amazon ElastiCache.

Обучение с помощью простых учебных пособий

Узнайте, как
создать кластер Memcached.

Приступите к работе

Начните разработку с помощью
руководства пользователя.

2.3 Примеры программ для трех API

1)     memcached client for java

Загрузите последний клиентский пакет: java_memcached-release_2.5.1.zip с URL-адреса проекта клиентской программы Memcached среды Java, представленной ранее. После распаковки найдите java_memcached-release_2.5.1.jar в папке. JAR пакет. Добавьте этот JAR-пакет к пути сборки проекта, после чего Memcached можно будет использовать в проекте.

Пример кода выглядит следующим образом:

package temp;
 
import com.danga.MemCached.*;
import org.apache.log4j.*;
 
public class CacheTest {
    public static void main(String[] args) {
       /**
                 * Инициализируйте SockIOPool, управляйте пулом соединений memcached
        * */
       String[] servers = { "10.11.15.222:10000" };
       SockIOPool pool = SockIOPool.getInstance();
       pool.setServers(servers);
       pool.setFailover(true);
       pool.setInitConn(10);
       pool.setMinConn(5);
       pool.setMaxConn(250);
       pool.setMaintSleep(30);
       pool.setNagle(false);
       pool.setSocketTO(3000);
       pool.setAliveCheck(true);
       pool.initialize();
      
       /**
                 * Создать экземпляр MemcachedClient
        * */
       MemCachedClient memCachedClient = new MemCachedClient();
       for (int i = 0; i < 1000; i++) {
           /**
                         * Добавить объекты в кэш memcached
            * */
           boolean success = memCachedClient.set("" + i, "Hello!");
           /**
                         * Получить объекты по значению ключа из кэша memcached
            * */
           String result = (String) memCachedClient.get("" + i);
           System.out.println(String.format("set( %d ): %s", i, success));
           System.out.println(String.format("get( %d ): %s", i, result));
       }
    }
}

2)      spymemcached

Пример кода выглядит следующим образом:

package temp;
 
import java.NET.InetSocketAddress;
import java.util.concurrent.Future;
 
import net.spy.memcached.MemcachedClient;
 
public class TestSpyMemcache {
    public static void main(String[] args) {
               // Сохранить объект
       try {
                       / * Создать экземпляр MemcachedClient и указать IP-адрес и номер порта службы memcached * /
           MemcachedClient mc = new MemcachedClient(new InetSocketAddress("10.11.15.222", 10000));
           Future<Boolean> b = null;
                       / * Установить значение ключа, время истечения (секунды) и объекты, которые будут кэшироваться в memcached * /
           b = mc.set("neea:testDaF:ksIdno", 900, "someObject");
           if (b.get().booleanValue() == true) {
              mc.shutdown();
           }
       } catch (Exception ex) {
           ex.printStackTrace();
       }
               // Получить объект
        try {
                       / * Создать экземпляр MemcachedClient и указать IP-адрес и номер порта службы memcached * /
           MemcachedClient mc = new MemcachedClient(new InetSocketAddress("10.11.15.222", 10000));
                       / * Найти кеш из memcached по значению ключа или null, если он не существует * /
           Object b = mc.get("neea:testDaF:ksIdno");
           System.out.println(b.toString());
           mc.shutdown();
       } catch (Exception ex) {
           ex.printStackTrace();
       }
    }
}

3)      xmemcached

Пример кода выглядит следующим образом:

package temp;
 
import java.io.IOException;
import java.util.concurrent.TimeoutException;
 
import net.rubyeye.xmemcached.utils.AddrUtil;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
 
public class TestXMemcache {
    public static void main(String[] args) {
       MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil
              .getAddresses("10.11.15.222:10000"));
       MemcachedClient memcachedClient;
       try {
           memcachedClient = builder.build();
      
           memcachedClient.set("hello", 0, "Hello,xmemcached");
           String value = memcachedClient.get("hello");
           System.out.println("hello=" + value);
           memcachedClient.delete("hello");
           value = memcachedClient.get("hello");
           System.out.println("hello=" + value);
           // close memcached client
           memcachedClient.shutdown();
       } catch (MemcachedException e) {
           System.err.println("MemcachedClient operation fail");
           e.printStackTrace();
       } catch (TimeoutException e) {
           System.err.println("MemcachedClient operation timeout");
           e.printStackTrace();
       } catch (InterruptedException e) {
           // ignore
       }catch (IOException e) {
           System.err.println("Shutdown MemcachedClient fail");
           e.printStackTrace();
       }
    }
}

Memcached

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

В силу своей простоты Memcached работает гораздо быстрее чем MySQL, и потребляет гораздо меньше памяти. Есть и ограничения связанные с этой простотой, например нельзя отправлять сложные запросы на выборку, поэтому полностью заменить базу данных сервером Memcached в WordPress невозможно.

Кэширование объектов в WordPress работает по тому же принципу, что и Memcached — произвольные значения или объекты хранятся в памяти под определенным ключом. Недостаток один — поскольку кэш объектов в WordPress является непостоянным, все закэшированные значения сбрасываются при следующем посещении страницы сайта.

Сервер Memcached помогает решить эту проблему и сделать объектный кэш постоянным. Это значит, что такие данные как опции сайта WordPress, пользователи, термины, записи, мета-данные и прочее, можно сразу получать из хранилища Memcached в обход базы данных MySQL.

Установка Memcached

Для того, чтобы установить сервер Memcached вам потребуется доступ администратора к вашей хостинг-площадки. Большинство провайдеров виртуального хостинга не предоставляют такой возможности, поэтому следует смотреть в сторону виртуальных (VPS) или выделенных (dedicated) серверов. Учтите так же, что на некоторых специализированных хостинг-площадках уже установлен и настроен сервер Memcached, например WP Engine.

Установить сервер Memcached легко с помощью менеджера пакетов в том или ином дистрибутиве Linux. Например в Ubuntu или Debian Linux сделать это можно с помощью утилиты :

sudo apt-get install memcached

После установки сервер Memcached запустится сразу. Конфигурация сервера находится в файле , где вы можете настраивать такие параметры как память, адрес и порт. Эти данные вам потребуются при конфигурации плагина для WordPress.

После внесения изменений в конфигурационный файл не забудьте перезагрузить сервер:

sudo service memcached restart

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

How to Install Memcached on Debian 9

22 Апреля 2021
&vert;

Debian

В этом руководстве мы проведем вас через установку и настройку Memcached в Debian 9.

Memcached — это бесплатное высокопроизводительное хранилище данных типа «ключ-значение» в памяти с открытым исходным кодом. В основном он используется для ускорения приложений путем кэширования различных объектов из результатов вызовов базы данных.

Прежде чем продолжить

Вам нужно будет войти в систему как пользователь с доступом sudo, чтобы иметь возможность устанавливать пакеты в вашей системе Debian.
 

Установка Memcached

Пакеты Memcached включены в репозитории Debian 9 по умолчанию. Установка очень проста, просто выполните следующие действия:

  1. Обновите список пакетов:

  2. Установите Memcached, набрав:

    Пакет предоставляет несколько инструментов командной строки для управления Memcached сервером.

  3. После завершения установки служба Memcached запустится автоматически. Чтобы проверить статус службы, введите следующую команду:

    Результат будет выглядеть так:

Вот и все, вы успешно установили Memcached на свой сервер Debian 9.

Настройка Memcached

Memcached можно настроить, отредактировав файл. Для большинства пользователей достаточно настроек конфигурации по умолчанию.

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

Удаленный доступ

Если он настроен неправильно, Memcached может использоваться для выполнения распределенной атаки типа «отказ в обслуживании» (DDoS). Чтобы разрешить удаленные подключения к серверу Memcached, вам необходимо настроить брандмауэр и разрешить доступ к UDP-порту 11211 Memcached только для доверенных клиентов.

В следующем примере мы предполагаем, что вы хотите подключиться к серверу Memcached через частную сеть. IP-адрес сервера и IP-адрес клиента 

Если вы используете UFW , выполните следующую команду, чтобы разрешить оценку с IP-адреса удаленного клиента:

Если вы используете старый простой iptables, запустите:

После настройки брандмауэра следующим шагом будет отредактировать настройки Memcached и настроить службу Memcached на прослушивание интерфейса частной сети сервера:

Для этого откройте файл конфигурации:

Найдите строку, которая начинается с, и замените на IP-адрес сервера .

/etc/memcached.conf

Перезапустите сервис Memcached, чтобы изменения вступили в силу:

Теперь вы можете подключиться к серверу Memcached из удаленного места.

Подключение к Memcached

Чтобы подключиться к серверу Memcached, вам необходимо использовать клиент, зависящий от языка.

PHP

Чтобы использовать Memcached в качестве кэширующей базы данных для вашего PHP- приложения, такого как WordPress, Drupal или Magento, вам необходимо установить расширение:

Python 

Есть несколько библиотек Python для взаимодействия с memcache. Вы можете установить предпочитаемую библиотеку с помощью pip :

Вы узнали, как установить Memcached на свой сервер Debian 9. Для получения дополнительной информации по этой теме обратитесь к Memcached Wiki .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector