Дата последнего изменения: 27.10.2020
Для создания подключения в файле настроек bitrix/.settings.php
, необходимо добавить в секцию connections именованное подключение.
Убедитесь, что у вас установлено расширение Redis для работы через PHP.
Обычное подключение:
'connections' => [ 'value' => [ 'default' => [ 'className' => \Bitrix\Main\DB\MysqliConnection::class, //... настройки существующего подключения в БД ], 'custom.redis' => [ 'className' => \Bitrix\Main\Data\RedisConnection::class, 'port' => 6379, 'host' => '127.0.0.1', 'serializer' => \Redis::SERIALIZER_IGBINARY, ], 'custom2.redis' => [ 'className' => \Bitrix\Main\Data\RedisConnection::class, 'port' => 6379, 'host' => '127.0.0.4', 'serializer' => \Redis::SERIALIZER_IGBINARY, ], ], 'readonly' => true, ]
Про настройки вариантов serializer можно прочитать в официальной документации.
Кластер
Если необходимо создать кластер из redis серверов, то достаточно добавить настройку servers.
'connections' => [ 'value' => [ 'default' => [ 'className' => \Bitrix\Main\DB\MysqliConnection::class, //... настройки существующего подключения в БД ], 'custom.redis' => [ 'className' => \Bitrix\Main\Data\RedisConnection::class, 'servers' => [ [ 'port' => 6379, 'host' => '127.0.0.1', ], [ 'port' => 6379, 'host' => '127.0.0.2', ], [ 'port' => 6379, 'host' => '127.0.0.3', ], ], 'serializer' => \Redis::SERIALIZER_IGBINARY, 'persistent' => false, 'failover' => \RedisCluster::FAILOVER_DISTRIBUTE, 'timeout' => null, 'read_timeout' => null, ], ], 'readonly' => true, ]
Про настройки вариантов serializer, persistent, failover, timeout, read_timeout можно прочитать в официальной документации.
Использование
Чтобы получить экземпляр соединения, достаточно обратиться по имени соединения, используя метод \Bitrix\Main\Application::getConnection.
/** @var \Redis $redisConnection **/ $redisConnection = \Bitrix\Main\Application::getConnection('custom.redis')->getResource(); $redisConnection->setnx('foo', 'bar');
Убедитесь, что у вас установлено расширение Memcache для работы через PHP.
Обычное подключение
'connections' => [ 'value' => [ 'default' => [ 'className' => \Bitrix\Main\DB\MysqliConnection::class, //... настройки существующего подключения в БД ], 'custom.memcache' => [ 'className' => \Bitrix\Main\Data\MemcacheConnection::class, 'port' => 11211, 'host' => '127.0.0.1', ], 'custom42.memcache' => [ 'className' => \Bitrix\Main\Data\MemcacheConnection::class, 'port' => 6379, 'host' => '127.0.0.4', ], ], 'readonly' => true, ]
Кластер
Если необходимо создать кластер из memcache серверов, то достаточно добавить настройку servers.
'connections' => [ 'value' => [ 'default' => [ 'className' => \Bitrix\Main\DB\MysqliConnection::class, //... настройки существующего подключения в БД ], 'custom.memcache' => [ 'className' => \Bitrix\Main\Data\MemcacheConnection::class, 'servers' => [ [ 'port' => 11211, 'host' => '127.0.0.1', 'weight' => 1, //про настройку weight читайте внимательно в документации по memcahe ], [ 'port' => 11211, 'host' => '127.0.0.2', 'weight' => 1, //про настройку weight читайте внимательно в документации по memcahe ], ], ], ], 'readonly' => true, ]
Использование
Чтобы получить экземпляр соединения, достаточно обратиться по имени соединения, используя метод \Bitrix\Main\Application::getConnection.
/** @var \Memcache $memcacheConnection **/ $memcacheConnection = \Bitrix\Main\Application::getConnection('custom.memcache')->getResource(); $memcacheConnection->set('foo', 'bar');