Установка Memcached
Memcached — программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы.
С помощью клиентской библиотеки (для C/C++, Ruby, Perl, PHP, Python, Java, .Net и др.) позволяет кэшировать данные в оперативной памяти множества доступных серверов. Распределение реализуется путём сегментирования данных по значению хеша ключа по аналогии с сокетами хеш-таблицы. Клиентская библиотека, используя ключ данных, вычисляет хеш и использует его для выбора соответствующего сервера. Ситуация сбоя сервера трактуется как промах кэша, что позволяет повышать отказоустойчивость комплекса за счет наращивания количества memcached-серверов и возможности производить их горячую замену.
В API memcached есть только базовые функции: выбор сервера, установка и разрыв соединения, добавление, удаление, обновление и получение объекта, а также Compare-and-swap. Для каждого объекта устанавливается время жизни, от 1 секунды до бесконечности. При исчерпании памяти более старые объекты автоматически удаляются. Для PHP также есть уже готовые библиотеки PECL для работы с memcached, которые дают дополнительную функциональность.
По умолчанию memcached использует порт 11211
Выполняем установку пакетов:
1
|
dnf install memcached libmemcached
|
Создаем или открываем на редактирование конфигурационный файл для запуска сервиса:
1
|
nano /etc/sysconfig/memcached
|
Приводим его к виду:
1
2
3
4
5
|
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="512"
OPTIONS="-l 127.0.0.1 -U 0"
|
* где PORT указываем на каком порту будет слушать сервис кэширования; USER — пользователь, под которым должен запускаться сервис; MAXCONN — максимальное число одновременных подключений; CACHESIZE — размер под кэш в мегабайтах; OPTIONS — параметры запуска (в данном примере наш сервис будет принимать запросы только с адреса локальной петли).
После разрешаем автозапуск и запускаем сервис кэширования:
1
|
systemctl enable memcached --now
|
Модуль для php
Устанавливаем пакеты, необходимые для сборки php-pecl-memcached:
1
|
dnf install php-devel php-pear zlib-devel make php-pear
|
Если не установлен репозиторий PowerTools:
1
2
3
4
|
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --set-enabled PowerTools
# или
sudo dnf config-manager --set-enabled powertools
|
1
|
dnf --enablerepo=PowerTools install libmemcached-devel
|
Запускаем компиляцию и сборку php-расширения:
1
|
pecl install memcached
|
Создаем конфигурационной файл для подключения расширения:
1
|
nano /etc/php.d/20-memcached.ini
|
1
|
extension=memcached.so
|
После установки модуля перезапускаем …
а) Apache:
1
|
systemctl restart httpd
|
б) или php-fpm:
1
|
systemctl restart php-fpm
|
Чтобы убедиться в этом, вводим следующую команду:
1
|
php -r "phpinfo();" | grep memcache
|
* в данном примере веб-сервер использует интерпретатор для PHP.
Проверка
Чтобы проверить, что модуль memcached работаем смотрим статус в phpinfo:

… или вводим команду:
1
|
php -m | grep memcached
|
Мы должны получить:
1
|
memcached
|