Найти в Дзене

Битркис кэш в Redis

Оглавление

В битриксе давно появилась возможность хранить кэш в redis. Это достаточно удобно и быстро работает. Но если включить как указано в документации - https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=105&LESSON_ID=14026 , то есть добавление в файл .setting_extra.php следующего кода

'cache' => array(
'value' => array(
'type' => array(
'class_name' => '\Bitrix\Main\Data\CacheEngineRedis',
'extension' => 'redis'
),
'redis' => array(
'host' => 'redis',
'port' => '6379',
),
'sid' => $_SERVER["DOCUMENT_ROOT"] . "#01"
),
),

то могут появиться ошибки вида

Undefined class constant 'SERIALIZER_IGBINARY'

Это связано с тем, что по умолчанию используется компактная сериализация данных в бинарном виде и она отключена.

Решение

Решение достаточно простое, необходимо установить несколько расширений и подключить их. Проходим авторизацию на сервере как пользователь root и выполняем команды

Активация acpu

Переходим в директорию с настроками php и активируем расширение acpu, для этого переименовываем файл

mv 40-apcu.ini.disabled 40-apcu.ini

Установка igbinary

Запускаем установку расширения, при возникновении вопросов, просто нажимаем Enter

pecl install igbinary

После установки необходимо подключить его, для этого добавляем в конец файла /etc/php.d/bitrixenv.ini строчку

extension=igbinary.so

Установка redis

Запускаем установку расширения.

pecl install redis

При возникновении вопросов, просто нажимаем Enter, кроме одного.

enable igbinary serializer support? [no]:

Нужно ввести yes и нажать Enter.

После установки необходимо подключить его, для этого добавляем в конец файла /etc/php.d/bitrixenv.ini строчку

extension=redis.so

Далее необходимо применить изменения

systemctl restart httpd

После этого можно посмотреть вывод php, в которых нужно обратить внимание на подключение расширений и некоторые значения

-2
-3
-4

Также можно в командной строке выполнить код, в результате не должно быть ошибок

var_dump(\Redis::SERIALIZER_IGBINARY);

Если все прошло нормально, то можно переходить включать хранение кэша в redis. Не забудьте задать лимиты на количество используемой памяти в конфигурационном файле редиса.