Memcached и Redis представляют собой сервисы кеширования данных в оперативной памяти, которые помогут ускорить работу ваших проектов на сервере.
Оба расширения просты в использовании и хорошо справляются со своей задачей, но Redis обладает бóльшим количеством возможностей.
Установка и настройка
Перед установкой обновите список доступных пакетов, чтобы избежать установки устаревших компонентов:
- Ubuntu/Debian:
# apt update
- CentOS:
# yum update
Также убедитесь, что используемые при дальнейшей настройке порты не блокируются действующим файерволом.
Memcached
Устанавливаем Memcached одной командой:
- Ubuntu/Debian:
# apt install memcached
- CentOS:
# yum install memcached
Дополнительно можно установить полезные утилиты для его настройки:
- Ubuntu/Debian:
# apt install libmemcached-tools
- CentOS:
# yum install libmemcached
Например, утилита для просмотра состояния Memcached-сервера:
- Ubuntu/Debian/CentOS:
# memcstat --servers=127.0.0.1
Полный список устанавливаемых утилит перечислен на официальном сайте дистрибутива.
На этом установка заканчивается. В системах Ubuntu сервер уже запущен, а для CentOS это потребуется сделать вручную:
- CentOS:
# systemctl start memcached
По умолчанию Memcached не включается при загрузке системы. Чтобы настроить автозапуск, используйте команду:
- Ubuntu/Debian/CentOS:
# systemctl enable memcached
Исходный порт сервера Memcached — 11211, выделяемый объем памяти — 64 Мб. Изменить порт, объем памяти, IP-адрес и другие параметры можно с помощью утилиты memcached, например:
- Ubuntu/Debian/CentOS:
# memcached -d -p 13331 -m 128 -u root
Новый демон (-d) memcached будет запущен на порту 13331 (-p) с объемом памяти 128 Мб (-m). Параметр -u задает пользователя, от имени которого будет запущен сервис; указывать пользователя необходимо только если команда запущена из-под root.
Изменить параметры можно и напрямую в конфигурационном файле:
- Ubuntu/Debian:
/etc/memcached.conf
- CentOS:
/etc/sysconfig/memcached
Пример содержимого:
-d -m 64 -p 11211 -u memcache -l 127.0.0.1 logfile /var/log/memcached.log
После внесения любых изменений сервис Memcached необходимо перезагрузить:
- Ubuntu/Debian/CentOS:
# systemctl restart memcached
Чтобы сайты на PHP и Apache могли использовать Memcached, устанавливаем специальный модуль:
- Ubuntu/Debian:
# apt install php-memcached
- CentOS:
# yum install php-pecl-memcache
И перезапускаем веб-сервер:
- Ubuntu/Debian:
# systemctl restart apache2
- CentOS:
# systemctl restart httpd
Документация модуля доступна на сайте PHP.
Проверить состояние сервера можно с помощью утилиты netcat:
- Ubuntu/Debian/CentOS:
# echo stats | nc 127.0.0.1 11211
Или с помощью специального скрипта:
- Ubuntu/Debian:
# /usr/share/memcached/scripts/memcached-tool 127.0.0.1:11211 stats
- CentOS:
# /usr/bin/memcached-tool 127.0.0.1:11211 stats
Redis
Для установки на операционной системе Ubuntu выполните команду:
# apt install redis-server
На CentOS предварительно понадобится установить репозиторий EPEL:
# yum install epel-release && yum install redis
А после установки запустить Redis вручную:
# systemctl start redis
Добавить Redis в автозапуск вместе с загрузкой бокса можно командой:
- Ubuntu/Debian/CentOS:
# systemctl enable redis-server
Сервис запущен и использует порт 6379. Управлять параметрами Redis можно с помощью redis-server, например:
- Ubuntu/Debian/CentOS:
# redis-server --port 1991 --bind 127.0.0.1 --daemonize yes
Или в конфигурационном файле:
- Ubuntu/Debian:
/etc/redis/redis.conf
- CentOS:
/etc/redis.conf
Пример фрагмента конфигурационного файла:
port 1991 bind 127.0.0.1 ::1 daemonize yes protected-mode yes logfile /var/log/redis/redis-server.log
Чтобы внесенные изменения вступили в силу, перезапустите сервис Redis:
- Ubuntu/Debian/CentOS:
# systemctl restart redis
Для совместимости с PHP и Apache устанавливаем модули:
- Ubuntu/Debian:
# apt install php-redis
- CentOS:
# yum install php-pecl-redis.x86_64 php-phpiredis.x86_64
И перезапускаем веб-сервер:
- Ubuntu/Debian:
# systemctl restart apache2
- CentOS:
# systemctl restart httpd
Проверить состояние сервера можно с помощью redis-cli:
- Ubuntu/Debian/CentOS:
# redis-cli memory stats
Теперь вы можете настроить свой проект для работы с Memcache/Redis и оценить их эффективность. Для бóльшей оптимизации также обратите внимание на различные модули-акселераторы PHP.