Задача: имеем полностью настроенный и оптимально сконфигурированный веб-сервер под управлением Ubuntu 20.04 на котором запущен интернет магазин c 1С-Битрикс. Нужно настроить хранение кеша в Redis хранилище (инструкция совместима и с Debian).

Redis— это высокопроизводительное хранилище значений ключей в памяти, известное своей гибкостью, производительностью и широкой языковой поддержкой.
Установка и конфигурирование Redis на Ubuntu 20.04.
Для начала установим Redis командой:
sudo apt install redis-server -y
Это позволит загрузить и установить Redis и его зависимости. После этого необходимо внести одно важное изменение в файл конфигурации. Открываем файл конфигурации redis.conf:
sudo nano /etc/redis/redis.conf
Находим строку supervised no и меняем на supervised systemd. Эта директива позволяет использовать систему инициализации systemd для управления Redis как службой, на Ubuntu
Далее необходимо внести еще ряд изменений в конфигурационный файл.
По умолчанию Redis использует всю доступную память на сервере. Рекомендуется настроить его так, чтобы он занимал около 60-70% оперативной памяти. Это можно сделать, отредактировав строчку в redis.conf следующим образом:
maxmemory 1024mb #Выделено 1Gb
maxmemory-policy volatile-ttl #удалять старый кеш если не помещается
Redis будет открывать новое соединение для каждого запроса. Чтобы избежать замедления работы из-за открытия нового соединения для каждого запроса, необходимо включить keepalive. Для этого измените строку в redis.conf на:
tcp-keepalive 0
Redis также пытается сохранить данные на диск, что может замедлить работу. Рекомендуется закомментировать строки, начинающиеся с save.
#save 900 1
#save 300 10
#save 60 10000
Некоторые параметры, такие как tcp-backlog и maxclients, могут потребоваться отредактировать под конкретные требования проекта и ожидаемую нагрузку:
tcp-backlog 511 #можно увеличить до 65536
maxclients 10000 #максимальное число соединений
В новых версиях redis собственное значение tcp-backlog установлено на 511, и вам потребуется увеличить его, если у вас много соединений.
maxclients - как только лимит будет достигнут, Redis закроет все новые соединения, отправляя. ошибку "достигнуто максимальное количество клиентов".
После внесения всех изменений перезапускаем сервис Redis командой
sudo systemctl restart redis.service
Настройка кеширования в Redis на стороне 1С-Битрикс
На стороне 1С-Битрикс все просто: в директории /bitrix/ открываем файл .settings_extra.php (если его нет создаем) и заменяем все содержимое на:
return array(
'cache' => array(
'value' => array(
'type' => array(
'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis',
'extension' => 'redis'
),
'redis' => array(
'host' => '127.0.0.1',
'port' => '6379',
),
'sid' => $_SERVER["DOCUMENT_ROOT"] . "#ho"
),
),
);
Обязательно укажите уникальное значение в качестве sid, например, первые две буквы домена, чтобы избежать перемешивания кешей разных сайтов в Redis.
Убедитесь, что кеширование в Redis успешно настроено, зайдя в админпанель, раздел "Настройки -> Производительность -> Панель производительности". Там должен быть указан текущий способ кеширования, используемый на сайте (скрин в начале статьи).
Видеоинструкция по установке и настройке Redis с 1С-Битрикс
Видеоинструкция входит в одну из серий моего видеокурса по созданию проекта на 1С-Битрикс.
Перейти к серии.

Максимальный объем памяти:
Код |
---|
maxmemory 2GB |
Это значение устанавливает максимальный объем памяти, который Redis может использовать для хранения данных. Здесь установлено 2 гигабайта.
Политика вытеснения:
Код |
---|
maxmemory-policy volatile-ttl |
Эта политика указывает Redis, какой ключ вытеснить, если достигнут максимальный объем памяти. В данном случае, Redis будет вытеснять ключи с истекшим временем жизни (TTL) с наименьшей частотой использования.
Количество соединений:
Код |
---|
maxclients 10000 |
Этот параметр устанавливает максимальное количество одновременных клиентских соединений. Установите его в соответствии с ожидаемой нагрузкой.
Очередь ожидающих соединений:
Код |
---|
tcp-backlog 511 |
Этот параметр указывает максимальное количество ожидающих соединений. Вам может потребоваться увеличить его, если у вас много соединений.
Отключение сохранения на диск:
Код |
---|
save "" |
Если вам не требуется сохранение данных на диск, лучше отключить эту опцию.
Отключение журналирования в диск:
Код |
---|
appendonly no |
Если вы не используете журналирование в диск (append-only file), то его можно отключить.
Эти параметры представляют собой базовые рекомендации и могут потребоваться корректировки в зависимости от конкретного сценария использования Redis. Важно также регулярно мониторить производительность и адаптировать настройки под реальные условия и нагрузку.