Redis в Laravel: Руководство

Если вы занимаетесь разработкой Laravel, вам может понадобиться использовать замечательные функции, такие как Cache или Queue(очереди), чтобы резко повысить производительность или отложить процесс трудоемких заданий соответственно. Настройка Laravel Cache или Laravel Queue потребует от вас выбора драйвера. Среди всех других доступных вариантов драйверов Redis является одним из них.

Redis предоставляет структурированный способ хранения данных в памяти. Поэтому это быстрее, чем ваша традиционная база данных, которая записывает на диск. Есть и другие программы, которые делают это, например, memcache; однако Redis предлагает еще несколько структур данных для хранения ваших данных. Redis также можно использовать в качестве очереди сообщений, используя его функциональность pubsub. Благодаря этим функциям Redis часто используется для временного хранения состояния. Это характерно для микросервисных архитектур, хранилищ сеансов и данных, которым не требуется долгосрочное сохранение.

Предварительные требования к установке

Необходимо выполнить следующие команды для установки Redis. Однако возможно, что ваш Linux уже настроены с этими пакетами.

#update and upgrade the linux
yum -y update
yum -y upgrade

#I like nano
yum install -y nano

#Install gcc & tcl, needed for compilation
yum install -y gcc*

Установка Redis

Выполните следующие команды для установки службы Redis.

wget http://download.redis.io/releases/redis-3.0.1.tar.gz
tar xzf redis-3.0.1.tar.gz
cd redis-3.0.1
make
make test
make install
cd utils
chmod +x install_server.sh
./install_server.sh
sudo chkconfig --level 2345 redis on

Проверка состояния и запуск, остановка, перезапуск сервисов Redis

Используйте следующие команды, чтобы проверить текущий статус службы Redis, независимо от того, запущена она или нет. Если вы не выбрали номер порта по умолчанию во время установки, вам необходимо настроить номер порта, соответствующий вашему:

service redis_6379 status

Для запуска, остановки и перезапуска службы Redis вы можете выполнить следующие команды:

service redis_6379 start
service redis_6379 stop
service redis_6379 restart

Установите пароль

Вы должны установить пароль для защиты вашей службы Redis, давайте отредактируем файл конфигурации Redis с помощью редактора nano, используйте следующую команду.

nano /etc/redis/6379.conf

а затем найти строку # requirepass foobared в файле, раскомментируйте строку выше и замените «foobared» своим паролем, как показано ниже.

requirepass somePassword

и нажмите CTRL+O , чтобы сохранить файл и перезапустить службу Redis.

Настройте Redis для проекта Laravel

Перед использованием Redis с Laravel вам необходимо установить predis/predis пакет через Composer:

composer require predis/predis

Конфигурация

Конфигурация Redis для вашего приложения находится в config/database.php файле конфигурации. В этом файле вы увидите redis массив, содержащий серверы Redis, используемые вашим приложением:

'redis' => [

    'client' => 'predis',

    'default' => [
        'host' => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
    ],

],

Конфигурации сервера по умолчанию должно быть достаточно для разработки. Однако вы можете изменить этот массив в зависимости от вашей среды. Обратите внимание, что вы должны установить следующее значение в своем .env файле проекта Laravel со значениями, соответствующими вашим данным конфигурации.

  • REDIS_HOST= локальный хост
  • REDIS_PASSWORD = некоторый пароль
  • REDIS_PORT = 6379

Взаимодействие Redis c Laravel

Для этого вам придется использовать фасад Redis.

use Illuminate\Support\Facades\Redis;

Фасад Redis поддерживает динамические методы, то есть вы можете вызвать любую команду Redis на фасаде, и команда будет передана прямо в Redis. В этом примере мы вызовем команду Redis GET, вызвав метод get на фасаде Redis:

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Redis;
 
class UserController extends Controller
{
    /**
    * Show the profile for the given user.
    *
    * @param  int  $id
    * @return Response
    */
    public function showProfile($id)
    {
        $user = Redis::get('user:profile:'.$id);
 
        return view('company.employee', ['user' => $user]);
    }
}

Вы можете вызвать любую из команд Redis на фасаде Redis. Laravel использует магические методы для передачи команд на сервер Redis, поэтому передайте аргументы, которые ожидает команда Redis:

Redis::set('company', 'Webkul');
$values = Redis::lrange('company', 5, 10);

Кроме того, вы также можете передавать свои команды на сервер с помощью метода command().

Он принимает имя команды в качестве первого аргумента и массив значений в качестве второго аргумента:

$values = Redis::command('lrange', ['name', 5, 10]);

Вывод

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