Как настроить Redis в качестве кэширующего сервера

Кэширование данных в оперативной памяти посредством Redis является одним из методов ускорения работы сайта. Данное хранилище высокопроизводительно и может использоваться для кэширования не только сайтов, но и сессий, а также в качестве нереляционной базы данных.

Установка Redis производится в два шага:

  1. Подключение репозитория backports. Версия в стандартном репозитории слишком стара.
  2. Установка командой aptitude install -t jessie-backports redis-server redis-tools

Настраиваем оптимальную конфигурацию

В Debian конфигурационный файл расположен в каталоге /etc/redis/ и называется redis.conf.

В первую очередь необходимо исправить ошибку с некорректно указанным максимальным количеством tcp соединений. Это актуально в случае использования tcp-сокетов.

Печатаем в консоли команду cat /proc/sys/net/core/somaxconn и выставляем соответствующее количество:

tcp-backlog 128

Для более быстрой работы подключаем возможность работы с unix-сокетом.

unixsocket /var/run/redis/redis.sock unixsocketperm 777

Ограничиваем максимальное количество подключаемых клиентов. Если необходимо больше 1024-х подключений, также потребуется изменить ограничение на количество одновременно открытых файлов (ulimit).

maxclients 1024

Определяем количество выделяемой оперативной памяти для кэша. В случае указания нулевого значения, будет использована вся доступнуая оперативную память для кэша.

maxmemory 64mb

Определяем политику работы с памятью. При данной политике, во время нехватки памяти, будут удаляться наиболее старые и наименее используемые ключи, чтобы освободить место для новых.

maxmemory-policy allkeys-lru

Так же, во избежание проблем с работой Redis (пункт 3 руководства, англ), следует отключить функцию ядра Transparent HugePages.

# echo never &gt, /sys/kernel/mm/transparent_hugepage/enabled

Перезапускаем для вступления изменений в силу.

# service redis restart

И добавляем в файл /etc/rc.local следующие строки, чтобы после перезагрузки сервера данная функция была отключена.

if test -f /sys/kernel/mm/transparent_hugepage/enabled, then echo never &gt, /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag, then echo never &gt, /sys/kernel/mm/transparent_hugepage/defrag fi

Кэширование php сессий

Настроить php на хранение сессий можно несколькими путями, в зависимости от используемой связки.

Напрямую в php.ini

[Session] session.save_handler = redis session.save_path = ‘unix:///run/redis/redis.sock’

Apache2 и mod_php (в файле виртуального хоста или apache2.conf)

&lt,IfModule mod_php5.c&gt, php_admin_value session.save_handler ‘redis’ php_admin_value session.save_path ‘unix:///run/redis/redis.sock’ &lt,/IfModule&gt,

PHP-FPM (в файле пула)

php_admin_value[session.save_handler] = ‘redis’ php_admin_value[session.save_path] = ‘unix:///run/redis/redis.sock’

Оцените статью
avege.ru
Добавить комментарий