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







