Практическая настройка Redis для кеширования в 1С-Битрикс

Стандартный кеш Битрикс пишет данные в файлы в `/bitrix/cache/`. На нагруженном сайте с 10 000 посетителей в сутки это генерирует до 300 000 операций ввода-вывода (IOPS). Если диск не NVMe, latency растёт, а страницы грузятся 3–5 секунд. Мы часто сталкиваемся с такими проектами: на одном интернет-ма
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Практическая настройка Redis для кеширования в 1С-Битрикс
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1456
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1162

Стандартный кеш Битрикс пишет данные в файлы в /bitrix/cache/. На нагруженном сайте с 10 000 посетителей в сутки это генерирует до 300 000 операций ввода-вывода (IOPS). Если диск не NVMe, latency растёт, а страницы грузятся 3–5 секунд. Мы часто сталкиваемся с такими проектами: на одном интернет-магазине с 50 000 товаров страница каталога открывалась 4.2 секунды. После замены файлового кеша на Redis время упало до 0.6 секунды — в 7 раз быстрее, и без изменения кода компонентов. Экономия на серверной инфраструктуре может достигать 50% за счёт снижения нагрузки на дисковую подсистему. Как отмечается в документации 1С-Битрикс, "для высоконагруженных проектов критически важно использовать кеширование in-memory для снижения времени отклика"Источник: Документация 1С-Битрикс.

Почему Redis, а не файловый кеш?

Redis — in-memory хранилище с микросекундным доступом, документированное в Wikipedia. Он снимает нагрузку с дисковой подсистемы и позволяет кешировать гораздо больше данных без потери скорости. Тегированный кеш в Redis работает эффективнее: нет проблемы тысяч мелких файлов.

Сравнение на типичном проекте:

Параметр Файловый кеш Redis
Средняя задержка доступа 1–5 мс (HDD) / 100–500 мкс (SSD) 50–100 мкс
Максимальное количество запросов ~500 IOPS (HDD) 50 000+ операций/с
Хранение тегированного кеша Мелкие файлы, очистка директорий Эффективные теги, быстрая DEL
Потребление памяти Зависит от ФС Контролируется через maxmemory

Настройка Redis для кеширования в 1С-Битрикс

Рассмотрим пошаговую настройку.

Подключение Redis как кеш-бэкенд

В /bitrix/.settings.php добавьте или измените секцию cache:

'cache' => [ 'value' => [ 'type' => [ 'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis', 'extension' => 'redis', ], 'sid' => 'site1', // уникальный префикс для разделения данных ], ], 

Настройки подключения Redis задаются в отдельном файле /bitrix/php_interface/redis.php или через конфигурацию:

// /bitrix/php_interface/init.php define('BX_CACHE_TYPE', 'redis'); define('BX_CACHE_SID', 'site1'); $GLOBALS['CACHE_REDIS'] = [ 'host' => '127.0.0.1', 'port' => 6379, 'database' => 2, // отдельная БД от сессий 'timeout' => 2, ]; 

Разделение кеша и сессий

Используйте разные базы данных Redis (параметр database):

  • БД 0 — служебная (RDB persistence)
  • БД 1 — сессии
  • БД 2 — кеш данных Битрикс
  • БД 3 — кеш HTML-страниц (если используется)

Это позволяет очищать кеш независимо от сессий: redis-cli -n 2 FLUSHDB очистит только кеш данных.

Подробнее о настройке сессий Redis Для хранения сессий в Redis добавьте в `init.php`: ```php ini_set('session.save_handler', 'redis'); ini_set('session.save_path', 'tcp://127.0.0.1:6379?database=1&prefix=SESS_'); ``` А в конфигурации Redis для сессий используйте политику `volatile-lru`: ```ini maxmemory-policy volatile-lru ```

Конфигурация Redis для кеша данных

# /etc/redis/redis.conf bind 127.0.0.1 port 6379 maxmemory 1gb maxmemory-policy allkeys-lru # вытеснять наименее используемые при нехватке памяти activerehashing yes tcp-keepalive 300 

allkeys-lru — правильная политика для кеша: когда память заполняется, вытесняются редко используемые ключи. Для сессий лучше volatile-lru (вытесняет только ключи с TTL).

Выбор политики вытеснения для кеша

Сравнение популярных политик:

Политика Описание Когда использовать
allkeys-lru Вытесняет наименее используемые ключи среди всех Для кеша данных
volatile-lru Вытесняет LRU среди ключей с TTL Для сессий
noeviction Возвращает ошибку при заполнении Только если уверены в объёме
allkeys-lfu Вытесняет наименее часто используемые Если доступ к данным неравномерный

Для кеша данных Битрикса рекомендуем allkeys-lru. При нехватке памяти вытесняются старые, редко используемые записи, а горячие данные остаются. Подробнее о политиках вытеснения можно прочитать в Wikipedia.

Тегированный кеш в Redis: механизм работы

Битрикс использует тегированный кеш для инвалидации групп связанных данных. При изменении элемента инфоблока тег iblock_id_N инвалидирует весь кеш, связанный с этим инфоблоком. Redis хранит теги эффективнее файловой системы — нет проблемы с тысячами мелких файлов. Проверьте, что тегированный кеш работает:

redis-cli -n 2 KEYS "BITRIX_CACHE_TAG_*" | head -20 

Если ключей нет — тегированный кеш не используется или данные ещё не закешированы.

Решение проблемы низкого hit rate

Низкий hit rate (ниже 80%) — индикатор проблем. Возможные причины:

  • Слишком частые инвалидации: например, каждые 10 секунд меняется курс валют. Решение — увеличить TTL или кешировать данные дольше.
  • Маленький объем Redis: если выделено 256 МБ, а сайт генерирует 1 ГБ кеша, старые ключи вытесняются.
  • Неправильная политика вытеснения: для кеша должен быть allkeys-lru, а не noeviction.

Целевой hit rate — 95%+. Мы в проектах используем мониторинг в Grafana для отслеживания этой метрики. Если вы хотите ускорить свой сайт на Битриксе, свяжитесь с нами — мы проведём аудит и предложим решение.

Как мониторить производительность кеша?

# Статистика использования redis-cli -n 2 INFO stats | grep -E "keyspace_hits|keyspace_misses" # Hit rate = hits / (hits + misses) # Цель: > 90% # Количество ключей redis-cli -n 2 DBSIZE # Использование памяти redis-cli INFO memory | grep used_memory_human 

Рекомендуем настроить оповещения при падении hit rate ниже 85%.

Что входит в работу по настройке Redis

При заказе настройки Redis под ключ мы предоставляем:

  1. Аудит текущей конфигурации — проверка версии Битрикса, PHP, Redis, анализ производительности.
  2. Подготовка Redis-сервера — установка, конфигурация с учётом нагрузки (maxmemory, политика вытеснения, персистентность).
  3. Интеграция с Битрикс — корректировка .settings.php и init.php, разделение кеша и сессий на разных базах.
  4. Тестирование — замеры hit rate, времени генерации страниц до и после, проверка тегированного кеша.
  5. Документация — описание конфигурации, инструкция по обслуживанию, скрипты для мониторинга.
  6. Обучение — показываем, как самостоятельно отслеживать метрики и очищать кеш.
  7. Поддержка — 30 дней гарантии после запуска: отвечаем на вопросы, помогаем с донастройкой.

Сроки — от 2 до 5 дней в зависимости от сложности проекта. Инвестиции в настройку Redis окупаются за 1-2 месяца за счёт снижения нагрузки на сервер. Оценим ваш проект бесплатно — просто напишите нам. Закажите настройку Redis — получите консультацию инженера. У нас 5 лет опыта в разработке на 1С-Битрикс, более 80 успешных проектов по ускорению сайтов.