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 |
Ваш комментарий будет первым