База знаний

Часто задаваемые вопросы, на которые мы уже ответили

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

Документация 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.





Была ли эта инструкция полезной?