Прописываем Redis в .settings_extra.php для кэша и сессий
Дата публикации: 24.06.2026

Прописываем Redis в .settings_extra.php для кэша и сессий

Хочу себе такие же кнопки
ccb9a536

Введение

Вы уже заметили, что ваш сайт на Битриксе начинает «запотевать» при росте трафика, а запросы к базе данных тормозят. Самый быстрый способ снять эту нагрузку — перенести кэш и хранение сессий в Redis. В этом уроке вы узнаете, как правильно прописать Redis в файле .settings_extra.php, чтобы Битрикс использовал его как кэш‑слой и хранилище сессий. Мы разберём каждый параметр, покажем, где их ставить, и почему это экономит время и ресурсы сервера.


1. Почему именно Redis?

Характеристика Redis Файловый кэш Битрикса MySQL‑сессии
Скорость Операции в памяти ≈ мкс Доступ к файлам ≈ мс Запросы к БД ≈ мс‑сек
Масштабируемость Горизонтальное шардирование Ограничено диском Плохая при большом числе запросов
Поддержка TTL Автоматическое истечение Нужно писать скрипты Не реализовано
Транзакционность atomic операции Нет Нет

Кратко: Redis — это in‑memory хранилище, которое умеет быстро отдавать данные и автоматически удалять устаревшие записи. Для сайта с большим количеством товаров, фильтров и пользовательских сессий это значит меньше запросов к базе и более плавную работу.


2. Подготовка сервера VDS

  1. Установите Redis (если он ещё не установлен). На большинстве Linux‑дистрибутивов это делается одной командой:

    sudo apt-get update && sudo apt-get install redis-server
  2. Проверьте, что сервис запущен:

    sudo systemctl status redis-server
  3. Откройте порт 6379 в файерволе, если планируете обращаться к Redis с другого сервера (обычно не требуется, если всё на одном VDS).

  4. Настройте пароль (по‑умолчанию Redis работает без аутентификации). Откройте /etc/redis/redis.conf и найдите строку:

    # requirepass foobared

    Уберите # и замените foobared на надёжный пароль, например MyStrongPass123!.

  5. Перезапустите сервис:

    sudo systemctl restart redis-server

Важно: храните пароль в безопасном месте и не публикуйте его в репозиториях.


3. Структура файла .settings_extra.php

Файл .settings_extra.php находится в корне сайта (рядом с bitrix/.settings.php). Он позволяет переопределять любые параметры без изменения базовых настроек. Пример базовой структуры:

<?php
return array(
    'cache' => array(
        // параметры кэша
    ),
    'session' => array(
        // параметры сессий
    ),
);

Ниже мы заполним эти секции нужными настройками для Redis.


4. Подключение Redis в качестве кэша

4.1. Основные параметры кэша

Параметр Описание Пример значения
type Тип кэша. Для Redis — redis. 'redis'
redis_host IP‑адрес/доменное имя сервера Redis. '127.0.0.1'
redis_port Порт, на котором слушает Redis (по‑умолчанию 6379). 6379
redis_db Номер базы данных Redis (0‑15). 1
redis_password Пароль, указанный в redis.conf. 'MyStrongPass123!'
cache_ttl Время жизни кэша в секундах (по‑умолчанию 3600). 7200

4.2. Пример кода

<?php
return array(
    'cache' => array(
        'type' => 'redis',
        'redis_host' => '127.0.0.1',
        'redis_port' => 6379,
        'redis_db' => 1,
        'redis_password' => 'MyStrongPass123!',
        // Время жизни кэша в секундах (можно переопределять в отдельных модулях)
        'cache_ttl' => 7200,
    ),
);

4.3. Почему redis_db = 1?

Битрикс использует базу 0 для своих внутренних нужд (например, системных настроек). Выделяя отдельную базу 1 для кэша, мы изолируем её от потенциальных конфликтов с другими данными.


5. Подключение Redis для сессий

5.1. Параметры сессий

Параметр Описание Пример значения
session_handler Тип обработчика сессий. Для Redis — redis. 'redis'
redis_host IP‑адрес/доменное имя сервера Redis. '127.0.0.1'
redis_port Порт Redis. 6379
redis_db Номер базы данных для сессий (обычно 2). 2
redis_password Пароль. 'MyStrongPass123!'
session_ttl Время жизни сессии в секундах. 14400 (4 часа)

5.2. Пример кода

<?php
return array(
    'session' => array(
        'session_handler' => 'redis',
        'redis_host' => '127.0.0.1',
        'redis_port' => 6379,
        'redis_db' => 2,
        'redis_password' => 'MyStrongPass123!',
        // Время жизни сессии (можно менять в настройках сайта)
        'session_ttl' => 14400,
    ),
);

5.3. Как это работает

Когда пользователь заходит на сайт, Битрикс генерирует ID сессии и сохраняет его в Redis. При следующем запросе сервер читает сессию из памяти, а не из файловой системы, что ускоряет процесс аутентификации и загрузки пользовательских данных.


6. Объединённый файл .settings_extra.php

Чтобы не дублировать код, объединим оба блока в один файл:

<?php
return array(
    // Кэш
    'cache' => array(
        'type' => 'redis',
        'redis_host' => '127.0.0.1',
        'redis_port' => 6379,
        'redis_db' => 1,
        'redis_password' => 'MyStrongPass123!',
        'cache_ttl' => 7200,
    ),
    // Сессии
    'session' => array(
        'session_handler' => 'redis',
        'redis_host' => '127.0.0.1',
        'redis_port' => 6379,
        'redis_db' => 2,
        'redis_password' => 'MyStrongPass123!',
        'session_ttl' => 14400,
    ),
);

Совет: храните пароль в отдельном файле config_local.php и подключайте его через require_once. Так вы избежите случайного коммита пароля в репозиторий.


7. Проверка работы

  1. Кэш: В админке Битрикса откройте любой инфоблок, включите «Кешировать запросы» и проверьте, что в Redis появляется ключ, например bx_cache_.... Команда:

    redis-cli -a MyStrongPass123! KEYS "bx_cache_*"
  2. Сессии: Откройте сайт в двух разных браузерах, выполните вход и проверьте, что в Redis появляются ключи вида PHPREDIS_SESSION:.... Команда:

    redis-cli -a MyStrongPass123! KEYS "PHPREDIS_SESSION:*"
  3. Логи: В bitrix/logs найдите файл cache.log. Если всё настроено правильно, ошибок о невозможности записать кэш не будет.


8. Частые проблемы и их решения

Проблема Причина Решение
“Connection refused” Redis не запущен или порт закрыт sudo systemctl start redis-server; откройте порт в firewall
“NOAUTH Authentication required.” Неправильный пароль в .settings_extra.php Проверьте redis_password и requirepass в redis.conf
“Cache not working” type указан неверно (например, memcached) Убедитесь, что в секции cache type = redis
“Session data lost after reboot” Redis настроен без persistence В redis.conf включите appendonly yes или save 900 1
“Too many connections” Ограничение maxclients слишком низкое Увеличьте maxclients в redis.conf и перезапустите сервис

9. Лучшие практики

Практика Почему это важно
Разделяйте базы данных (redis_db = 1 для кэша, 2 для сессий) Избегаем конфликтов и упрощаем очистку
Устанавливайте TTL (cache_ttl, session_ttl) Автоматически освобождаем память от устаревших записей
Включайте persistence (appendonly yes) Защищаемся от потери данных при падении сервера
Мониторьте нагрузку (redis-cli INFO) Видим, сколько памяти использует Redis, и можем масштабировать VDS
Не храните чувствительные данные в кэше Кэш — временное хранилище, не шифруется автоматически

10. Практика для закрепления

  1. Установите Redis на ваш VDS, задайте пароль и включите appendonly. Проверьте, что сервис работает без ошибок.
  2. Создайте файл .settings_extra.php согласно примерам выше, но используйте разные пароли для кэша и сессий (можно задать в переменных окружения).
  3. Отключите файловый кэш в админке Битрикса и включите только Redis‑кэш. Сравните время загрузки страницы до и после (используйте Chrome DevTools → Network).
  4. Смоделируйте падение: остановите Redis (sudo systemctl stop redis-server), выполните несколько запросов к сайту, затем запустите Redis снова. Как отреагирует система? Что нужно поправить, чтобы избежать 500‑ошибок?
  5. Настройте мониторинг: установите redis-cli monitor в отдельном терминале и выполните несколько действий на сайте (вход, выход, просмотр товаров). Запишите, какие команды приходят в Redis и почему.

11. Полезные ссылки


Поздравляем! Вы теперь умеете быстро и надёжно подключать Redis к вашему сайту на Битриксе, что позволит сократить время отклика и выдержать большие нагрузки без дополнительных расходов на серверные ресурсы. Применяйте полученные знания на практике, и ваш магазин будет работать как швейцарские часы. 🚀


CamZamZam - онлайн фото с вебкамеры с эффектами
Cartoon Network: игры с персонажами
Чат рулетка в 2026: будущие функции
Эксперт по доменным стратегическим решениям
Хостинг для e-commerce проектов
Как играть в слоты
Как настроить CDN для сайта на хостинге Host.bg
Как настроить SSL-сертификат для сайта на Host.bg
Как оптимизировать производительность сайта с хостингом Host.bg
Как выбрать правильный хостинг для вашего сайта
Какие бывают ЛОР болезни у детей
Кассовые терминалы с оплатой картами
LOL куклы витрина детская
Лучшие видеорегистраторы для водителей
Онлайн QR-код сканер
Онлайн-связь
Оптимизация производительности баз данных на хостинге Host.bg
Основы настройки веб-хостинга: что вам нужно знать
Партнёрская программа без блога: как получать трафик из Telegram
Профессиональные хитрости для пользователей хостинга Host.bg
Регистрация ИП в Москве для иностранных граждан
Сравнение хостинга Host.bg с другими провайдерами
Субтитры — нет, уши — включены: погружение в английский за 5 минут
Сумки с бусинами
Техника для строительства загородных трасс
ТОП-10 VPS для разработчика: рейтинг серверов под рабочие задачи
WordPress блог для бизнеса
рейтинг хостингов 2026 Быстрые VDS серверы