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

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Постановка задачи о проверке работы 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.

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

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