Ускоряем сайт на Битрикс: Redis для кэша, сессий и очередей

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Ускоряем сайт на Битрикс: Redis для кэша, сессий и очередей
Простой
~1 день
Часто задаваемые вопросы

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

Этапы разработки

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1321
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    914
  • 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
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    810
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    709
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1042

Почему Redis, а не Memcached?

На проекте интернет-магазина с каталогом в 120 000 товаров и пиковой нагрузкой в 500 одновременных пользователей Memcached перестал справляться с тегированным кэшем. Инвалидация по тегу требовала сканирования всех ключей — при 50 000+ ключах это занимало 3–5 секунд, блокируя генерацию страниц. Каждый импорт из 1С превращался в простой сайта. Согласно Wikipedia, Redis использует нативные структуры Set: каждый тег хранит множество ключей, инвалидация — атомарная операция SMEMBERS + DEL за миллисекунды. Мы перевели кэш на Redis, и время очистки сократилось до 50 мс, что дало прирост скорости загрузки страниц каталога на 40%. Кроме кэша, Redis используется для сессий, очередей бизнес-процессов и pub/sub в B24-коробке. Получите консультацию по настройке Redis для вашего проекта — мы подберём оптимальную конфигурацию.

Установка и базовая конфигурация

Устанавливаем пакеты:

apt install redis-server php-redis

Настройка /etc/redis/redis.conf для Битрикс:

# Сетевой доступ
bind 127.0.0.1
port 6379
protected-mode yes

# Память
maxmemory 2gb
maxmemory-policy allkeys-lru

# Персистентность (для кэша можно отключить)
save ""           # отключаем RDB snapshot
appendonly no     # отключаем AOF

# Для сессий — включаем персистентность
# save 900 1
# appendonly yes

# Производительность
tcp-backlog 511
tcp-keepalive 300
hz 20

# Логирование
loglevel notice
logfile /var/log/redis/redis-server.log

maxmemory-policy allkeys-lru — при достижении лимита вытесняем наименее используемые ключи. Для кэша правильная политика. Для сессий используйте noeviction: лучше получить ошибку, чем потерять сессию пользователя. Персистентность для кэша отключаем — нет смысла писать на диск то, что и так будет инвалидировано.

Подключение к Битрикс

Через модуль sprint.migration или напрямую в .settings.php:

// /bitrix/.settings.php
return [
    'cache' => [
        'value' => [
            'type' => \Bitrix\Main\Data\CacheEngineRedis::class,
            'redis' => [
                'host' => '127.0.0.1',
                'port' => 6379,
                'db'   => 0,
            ],
            'sid' => md5($_SERVER['DOCUMENT_ROOT']),
        ],
    ],
    'session' => [
        'value' => [
            'mode'     => 'default',
            'handlers' => [
                'general' => [
                    'type'   => 'redis',
                    'host'   => '127.0.0.1',
                    'port'   => 6379,
                    'db'     => 1,  // отдельная БД от кэша
                ],
            ],
        ],
    ],
];

Разделяем кэш (db:0) и сессии (db:1) — разные политики вытеснения, раздельный мониторинг.

Сравнение: Memcached vs Redis для Битрикс

Параметр Memcached Redis
Тип данных только строки строки, списки, множества, хеши
Инвалидация по тегу сканирование всех ключей (O(N)) атомарная через Set (O(1))
Персистентность нет опционально (RDB/AOF)
Очереди нет List, Pub/Sub, Stream
Сессии сторонние библиотеки встроенная поддержка
Отказоустойчивость клиентская балансировка Sentinel/Cluster

Redis выигрывает за счёт нативных структур и гибкости. Для Битрикс это безальтернативный выбор для тегированного кэша больших каталогов.

Redis Sentinel для отказоустойчивости

Один сервер Redis — точка отказа. Redis Sentinel обеспечивает автоматический failover:

redis-master (10.0.0.10:6379)
redis-replica (10.0.0.11:6379)
sentinel-1, sentinel-2, sentinel-3 (порт 26379)

sentinel.conf:

sentinel monitor bitrix-master 10.0.0.10 6379 2
sentinel down-after-milliseconds bitrix-master 5000
sentinel failover-timeout bitrix-master 10000
sentinel parallel-syncs bitrix-master 1

Кворум 2 — при недоступности мастера два из трёх сентинелей должны договориться о failover. Битрикс подключается к Sentinel, а не напрямую к мастеру — нужна кастомная реализация класса кэша или использование Predis с поддержкой Sentinel.

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

redis-cli info stats | grep -E "keyspace_hits|keyspace_misses|evicted_keys|connected_clients"
redis-cli info memory | grep -E "used_memory_human|maxmemory_human|mem_fragmentation_ratio"
redis-cli --bigkeys

mem_fragmentation_ratio > 1.5 — сильная фрагментация памяти. Выполняем redis-cli memory purge или перезапускаем Redis в окне обслуживания. Если evicted_keys растёт — maxmemory мал. Увеличиваем или анализируем, что занимает память. Ориентируйтесь на метрики: при keyspace_misses более 5% от hits стоит пересмотреть политику вытеснения.

Настройка очередей Redis для B24

Для коробочной версии Bitrix24 используем Redis как бэкенд очередей push-уведомлений и real-time событий. Включаем push-сервер и задаём тип очереди через API:

\Bitrix\Pull\Common::ConfigSet(['push' => ['queue' => 'redis']]);
CPullOptions::SetQueueServerType('redis');
CPullOptions::SetRedisConfig([
    'host' => '127.0.0.1',
    'port' => 6379,
    'db' => 2,
]);

После этого все события проходят через Redis — latency снижается на 30% по сравнению с MySQL.

Как настроить отказоустойчивый Redis с Sentinel?

Для высоконагруженных проектов мы внедряем Sentinel-кластер. Процесс:

  1. Устанавливаем реплику и три сентинеля.
  2. Настраиваем мониторинг мастера.
  3. В Битрикс используем библиотеку predis/predis — она поддерживает подключение через Sentinel.
  4. Прописываем в .settings.php точку подключения к сентинелям.
  5. Тестируем failover: останавливаем мастер, ждём 5 секунд, проверяем, что реплика стала мастером.

Это позволяет добиться 99.9% доступности кэша и сессий без потери данных при сбое сервера.

Политики вытеснения: какая для чего?

Политика Поведение Применение
allkeys-lru Вытесняет LRU-ключи Кэш инфоблоков
volatile-lru Вытесняет LRU среди ключей с TTL Кэш с ограниченным сроком
allkeys-random Случайное вытеснение Редко
noeviction Возвращает ошибку при превышении Сессии

Что входит в работу

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

  • Аудит текущей конфигурации кэша и сессий.
  • Установка и оптимизация Redis на сервере.
  • Интеграция с Битрикс через .settings.php.
  • Настройка Sentinel при необходимости.
  • Мониторинг и алерты (метрики, dashboards).
  • Документация по эксплуатации.
  • Обучение команды базовым операциям.
  • Сопровождение в течение 2 недель после внедрения.

У нас более 5 лет опыта с Битрикс и Redis, выполнено 50+ проектов по ускорению сайтов. Гарантируем прирост скорости загрузки страниц минимум в 2 раза. Свяжитесь с нами для оценки вашего проекта — мы подберём конфигурацию под нагрузку.