Как проверить, работает ли Redis в Laravel
Проверка работы Redis в Laravel с помощью простого роута и контроллера


Постановка задачи о проверке работы Laravel с Redis.

При работе над проектом Laravel рано или поздно встаёт вопрос о том, есть ли в системе Redis и правильно ли всё настроено для работы с ним. Это касается как среды разработки, так и боевого сервера. Для того, чтобы не было сомнений о том, что всё правильно настроено и штатно работает, проще всего написать небольшой Контроллер, который явным способом покажет ошибки или выдаст результат работы Laravel с Redis.

Для проверки работы Redis в Laravel создадим простой роут и контроллер. В контроллере выполним основные операции CRUD с Redis: запись, чтение, изменение и удаление данных. После каждой операции будем возвращать текстовое сообщение с результатом.

Проверка работы Redis в Laravel.

Убедитесь, что Redis настроен в окружении Laravel.

Установите Redis, если он ещё не установлен:

apt-get install redis

Проверьте, что Redis запущен:

systemctl status redis

Убедитесь, что в файле .env указан драйвер Redis:

CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Создание контроллера для тестирования работы Redis в Laravel.

Создайте контроллер с помощью Artisan:

php artisan make:controller RedisTestController

Код проверочного контроллера для тестирования работы Redis в Laravel.

Внутри контроллера реализуем логику работы с Redis.

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Redis;
use Illuminate\Http\Request;

class RedisTestController extends Controller
{
    public function testRedis()
    {
        $key = 'test_key';
        $value = 'Hello, Redis!';

        // Запись в Redis
        Redis::set($key, $value);
        $result = "Запись добавлена: [$key => $value]<br>\n";

        // Чтение из Redis
        $readValue = Redis::get($key);
        $result .= "Чтение записи: [$key => $readValue]<br>\n";

        // Изменение записи
        $newValue = 'Hello, Updated Redis!';
        Redis::set($key, $newValue);
        $result .= "Запись изменена: [$key => $newValue]<br>\n";

        // Удаление записи
        Redis::del($key);
        $result .= "Запись удалена: [$key]<br>\n";

        // Проверка, что запись удалена
        $readValueAfterDelete = Redis::get($key);
        $result .= "Проверка после удаления: [$key => " . ($readValueAfterDelete ?: 'null') . "]<br>\n";

        return response($result, 200);
    }
}

Добавление тестового роута в Larave для тестирования работы Redis.

Откройте файл routes/web.php и добавьте роут для тестирования Redis:

Route::get('/test-redis', [App\Http\Controllers\RedisTestController::class, 'testRedis']);

Тестирование работы Redis в Laravel.

Перейдите по адресу http://localhost/test-redis в браузере или с помощью curl:

curl http://localhost/test-redis

Что должно получиться в итоге.

При переходе по адресу http://localhost/test-redis должен быть такой текстовый вывод:

Запись добавлена: [test_key => Hello, Redis!]
Чтение записи: [test_key => Hello, Redis!]
Запись изменена: [test_key => Hello, Updated Redis!]
Запись удалена: [test_key]
Проверка после удаления: [test_key => null]

Объяснение кода проверки работы Laravel с Redis.

  1. Запись в Redis:
    • Используем метод Redis::set($key, $value) для записи данных.
  2. Чтение из Redis:
    • Используем метод Redis::get($key) для получения данных.
  3. Изменение записи в Redis:
    • Используем метод Redis::set($key, $newValue) для обновления данных.
  4. Удаление записи в Redis:
    • Используем метод Redis::del($key) для удаления данных.
  5. Проверка чтения из Redis после удаления данных:
    • Пытаемся прочитать удалённую запись и проверяем, что она действительно удалена.

Что делать, если Redis не работает в  Laravel.

Если Redis не работает, убедитесь, что он запущен и настроен в .env.

Если вы используете Docker, убедитесь, что Redis доступен из контейнера Laravel.

Для более сложных операций с Redis можно использовать методы incr, decr, hset, hget и другие, но об этом как-нибудь в другой раз. ;)

P.S. Код протестирован в локальной среде разработки Laravel 12 Sail (Docker) и в продакшэн на Debian 11. PHP 8.3.

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню