{{TOC}} == Введение == ((http://redis.io Redis)) - открытое продвинутое хранилище пар ключ/значение. Его часто называют сервисом структур данных, так как ключи могут содержать ((http://redis.io/topics/data-types#strings строки)), ((http://redis.io/topics/data-types#hashes хэши)), ((http://redis.io/topics/data-types#lists списки)), ((http://redis.io/topics/data-types#sets наборы)) и ((http://redis.io/topics/data-types#sorted-sets сортированные наборы)). .(alert) **Внимание:** если у вас установлено расширение Redis через PECL, вам нужно переименовать псевдоним в файле %%(t)app/config/app.php%%. == Настройка == Настройки вашего подключения к Redis хранятся в файле %%(t)app/config/database.php%%. В нём вы найдёте массив **redis**, содержащий список серверов, используемых приложением: %% 'redis' => array( 'cluster' => true, 'default' => array('host' => '127.0.0.1', 'port' => 6379), ), %% Значения по умолчанию должны подойти для разработки. Однако вы свободно можете менять этот массив в зависимости от своего окружения. Просто дайте имя каждому подключению к Redis и укажите серверные хост и порт. Параметр %%(t)cluster%% сообщает клиенту Redis Laravel, что нужно выполнить фрагментацию узлов Redis (//client-side sharding//), что позволит вам обращаться к ним и увеличить доступную RAM. Однако заметьте, что фрагментация не справляется с падениями, поэтому она в основном используется для кэшировании данных, которые доступны из основного источника. Если ваш сервер Redis требует авторизацию, вы можете указать пароль, добавив к параметрам подключения пару ключ/значение %%(t)password%%. == Использование == Вы можете получить экземпляр Redis методом %%Redis::connection()%%: %% $redis = Redis::connection(); %% Так вы получите экземпляр подключения по умолчанию. Если вы не используете фрагментацию, то можно передать этому методу имя сервера для получения конкретного подключения, как оно определено в файле настроек. %% $redis = Redis::connection('other'); %% Как только у вас есть экземпляр клиента Redis вы можете выполнить любую ((http://redis.io/commands команду Redis)). Laravel использует ((phpdoc:language.oop5.magic магические методы PHP)) для передачи команд на сервер: %% $redis->set('name', 'Тейлор'); $name = $redis->get('name'); $values = $redis->lrange('names', 5, 10); %% Как вы видите, параметры команд просто передаются магическому методу. Конечно, вам не обязательно использовать эти методы - вы можете передавать команды на сервер методом %%command()%%. %% $values = $redis->command('lrange', array(5, 10)); %% Когда вы выполняете команды на подключении по умолчанию просто вызывайте соответствующие статические методы класса %%Redis%%: %% Redis::set('name', 'Тейлор'); $name = Redis::get('name'); $values = Redis::lrange('names', 5, 10); %% .(alert) Laravel поставляется с драйверами Redis для ((docs/v4/cache кэширования)) и ((docs/v4/session сессий)). == Конвейер == Конвейер должен использоваться, когда вы отправляете много команд на сервер за одну операцию. Для начала выполните команду %%pipeline()%%. **Отправка конвейером набора команд на сервер** %% Redis::pipeline(function ($pipe) { for ($i = 0; $i < 1000; $i++) { $pipe->set("key:$i", $i); } }); %%