Искать в Базе знаний

Серверы кеширования: Memcached и Redis

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.
2005–2025 ООО «СПРИНТХОСТ.РУ»
Входит в Реестр аккредитованных ИТ-компаний
и Реестр провайдеров хостинга
Лицензия №162552