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

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

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування Redis для кеширування даних у 1С-Bitrix

Стандартний кеш Bitrix записує дані у файли в /bitrix/cache/. На навантаженому сайті це тисячі дрібних файлів, операції з якими впираються в IOPS диску. Redis як сховище в пам'яті дає мікросекундний доступ до кешу та знімає навантаження з файлової системи.

Підключення 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 — кеш даних Bitrix
  • БД 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

Bitrix використовує тегований кеш для інвалідації груп пов'язаних даних. При змін елемента інфоблоку тег 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 секунд — кешування безглуздо.