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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка Redis для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

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

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

На проекте с высокой конкурентностью Memcached не справляется с тегированным кэшем: инвалидация по тегу требует сканирования всех ключей, что при 50 000+ ключах в кэше занимает сотни миллисекунд и блокирует другие операции. Redis решает эту задачу через нативные структуры Set — тег хранит множество ключей, инвалидация — атомарная операция SMEMBERS + DEL.

Кроме кэша, Redis используется в Битрикс для сессий, очередей в бизнес-процессах и pub/sub в B24-коробке.

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

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 — лучше получить ошибку, чем потерять сессию пользователя.

Отключение персистентности (save "", appendonly no) для Redis, используемого только как кэш — нет смысла писать на диск то, что и так будет инвалидировано.

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

Через модуль 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) — разные политики вытеснения, раздельный мониторинг.

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-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"

mem_fragmentation_ratio > 1.5 — сильная фрагментация памяти. Выполняем redis-cli memory purge или перезапускаем Redis в окне обслуживания.

evicted_keys растётmaxmemory слишком мал. Увеличиваем или анализируем, что занимает память:

redis-cli --bigkeys

Использование Redis для очередей B24

В Bitrix24 коробочной версии Redis используется для очередей push-уведомлений и реального времени:

// Проверяем наличие модуля push-server
\Bitrix\Main\Loader::includeModule('pull');
\CPullOptions::SetQueueServerType('redis');
\CPullOptions::SetRedisConfig(['host' => '127.0.0.1', 'port' => 6379]);