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

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

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

Стандартный кеш Битрикс пишет данные в файлы в /bitrix/cache/. На нагруженном сайте это тысячи мелких файлов, операции с которыми упираются в IOPS диска. Redis как in-memory хранилище даёт микросекундный доступ к кешу и снимает нагрузку с файловой системы.

Подключение 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 — зарезервирована по умолчанию
  • БД 1 — сессии
  • БД 2 — кеш данных Битрикс
  • БД 3 — кеш HTML-страниц (если используется)

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

Конфигурация 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).

Тегированный кеш с Redis

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

Проверьте, что тегированный кеш работает:

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

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

Мониторинг кеша

# Статистика использования
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 (< 70%) означает, что кеш сбрасывается слишком часто или TTL слишком маленький. Проверьте частоту инвалидации тегов: если каждые 10 секунд меняются данные инфоблока, весь кеш инфоблока сбрасывается каждые 10 секунд — кешировать бессмысленно.