- Постановка задачи о проверке работы Laravel с Redis
- Проверка работы Redis в Laravel
- Что должно получиться в итоге
- Объяснение кода проверки работы Laravel с Redis
- Что делать, если 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.
- Запись в Redis:
- Используем метод
Redis::set($key, $value)
для записи данных.
- Используем метод
- Чтение из Redis:
- Используем метод
Redis::get($key)
для получения данных.
- Используем метод
- Изменение записи в Redis:
- Используем метод
Redis::set($key, $newValue)
для обновления данных.
- Используем метод
- Удаление записи в Redis:
- Используем метод
Redis::del($key)
для удаления данных.
- Используем метод
- Проверка чтения из Redis после удаления данных:
- Пытаемся прочитать удалённую запись и проверяем, что она действительно удалена.
Что делать, если Redis не работает в Laravel.
Если Redis не работает, убедитесь, что он запущен и настроен в .env
.
Если вы используете Docker, убедитесь, что Redis доступен из контейнера Laravel.
Для более сложных операций с Redis можно использовать методы incr
, decr
, hset
, hget
и другие, но об этом как-нибудь в другой раз. ;)
P.S. Код протестирован в локальной среде разработки Laravel 12 Sail (Docker) и в продакшэн на Debian 11. PHP 8.3.
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)