Instalacja Redisa na Debianie 13 i podpięcie go do Laravela
zweryfikowano 7 września 2026 · 4 min
Zainstaluj redis-server i rozszerzenie php-redis, a potem wpisz do .env: REDIS_CLIENT=phpredis, CACHE_STORE=redis, SESSION_DRIVER=redis oraz QUEUE_CONNECTION=redis. Uwaga, CACHE_DRIVER i QUEUE_DRIVER już nie istnieją: nieznany klucz jest ignorowany bez błędu, a aplikacja zostaje przy domyślnym sterowniku.
Redis służy jako cache, magazyn sesji i kolejka zadań dla aplikacji Laravel. Debian 13 dostarcza Redisa 8, a Laravel 13 łączy się z nim domyślnie przez rozszerzenie phpredis, szybsze niż długo polecana biblioteka PHP predis.
Ten rozdział przedłuża instalację Laravela na Debianie, w ścieżce Programowanie webowe. Instalacja i integracja sprawdzone na Debianie 13 „trixie” z Laravelem 13.30.1, 2 września 2026 roku.
Instalacja Redisa i rozszerzenia PHP
sudo apt update
sudo apt install -y redis-server php-redisDwa pakiety, dwie role: redis-server to serwer, a php-redis to rozszerzenie, dzięki któremu PHP potrafi z nim rozmawiać. Sprawdź oba:
redis-server --version
redis-cli ping
php -r 'echo extension_loaded("redis") ? phpversion("redis") : "absente", PHP_EOL;'Redis server v=8.0.2 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64
PONG
6.2.0PONG potwierdza, że usługa działa i odpowiada. Włącz ją przy starcie systemu:
sudo systemctl enable --now redis-server
sudo systemctl status redis-serverZabezpiecz się, zanim pójdziesz dalej
Redis wystawiony bez hasła na publiczny interfejs jest do odczytu i do zapisu dla każdego. To klasyczny incydent, a domyślna konfiguracja Debiana chroni już to, co najważniejsze, mimo to ją sprawdź.
sudo nano /etc/redis/redis.conf# nasłuchuj tylko na pętli zwrotnej
bind 127.0.0.1 -::1
# odrzucaj nieuwierzytelnione połączenia z zewnątrz
protected-mode yes
# hasło, niezbędne, gdy Redis nie stoi już na tej samej maszynie
requirepass un_mot_de_passe_long_et_aleatoiresudo systemctl restart redis-serverJeśli aplikacja i Redis stoją na tej samej maszynie, zostaw bind 127.0.0.1: to najbezpieczniejsza konfiguracja, a hasło staje się drugą barierą, a nie jedyną.
Konfiguracja Laravela
Klucze w pliku .env zmieniały nazwy wraz z kolejnymi wersjami. Oto te z Laravela 13, dokładnie tak, jak stoją w pliku wygenerowanym przy instalacji:
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redisTo najczęstszy błąd w tym temacie i do tego cichy: nieznany klucz w .env nie wywołuje żadnego błędu, aplikacja po prostu dalej używa domyślnego sterownika. QUEUE_DRIVER został przemianowany na QUEUE_CONNECTION już w Laravelu 5.7, a CACHE_DRIVER stał się CACHE_STORE w Laravelu 11.
Przeładuj konfigurację i sprawdź, czego aplikacja faktycznie używa. Uwaga, cache konfiguracji zamraża te wartości:
php artisan config:clear
php artisan tinker --execute='
printf("client : %s\n", config("database.redis.client"));
printf("cache : %s\n", config("cache.default"));
printf("queue : %s\n", config("queue.default"));
printf("session : %s\n", config("session.driver"));
'client : phpredis
cache : redis
queue : redis
session : redisSprawdź, że to naprawdę działa
Ustawienie przyjęte to nie to samo co ustawienie działające. Zapisz wartość i odczytaj ją z powrotem:
php artisan tinker --execute='
Cache::put("gk_test", "valeur", 60);
printf("Cache::get : %s\n", Cache::get("gk_test"));
printf("Redis::ping : %s\n", Illuminate\Support\Facades\Redis::ping());
printf("version : %s\n", Illuminate\Support\Facades\Redis::info()["redis_version"]);
'Pełna nazwa fasady jest tu niezbędna: po zainstalowaniu rozszerzenia phpredis Redis oznacza klasę rozszerzenia, Laravel nie rejestruje już swojego aliasu, a zwykłe Redis::ping() kończy się błędem „Non-static method Redis::ping() cannot be called statically”.
Cache::get : valeur
Redis::ping : 1
version : 8.0.2redis-cli --scan na bazie 0 nic nie zwraca i stąd wniosek, że cache nie działa. W rzeczywistości Laravel zapisuje cache w bazie 1 i nakłada dwa prefiksy. Klucz z powyższego przykładu jest zapisany dokładnie pod taką nazwą:
redis-cli -n 1 --scanlaravel-database-laravel-cache-gk_testPierwszy prefiks pochodzi z database.redis.options.prefix, drugi z cache.prefix. Bazę 1 ustala database.redis.cache.database, co izoluje cache od kolejek i sesji.
phpredis czy predis
phpredis | predis | |
|---|---|---|
| Rodzaj | rozszerzenie w C | biblioteka PHP |
| Instalacja | apt install php-redis | composer require predis/predis |
| Domyślne w Laravelu 13 | tak | nie |
| Dostęp roota do serwera | konieczny | niekonieczny |
Wybieraj phpredis, o ile administrujesz maszyną: obsługa protokołu dzieje się w C. predis pozostaje przydatne na hostingu współdzielonym, gdzie nie zainstalujesz rozszerzenia. W takim wypadku:
composer require predis/predisREDIS_CLIENT=predisObsługa kolejek
Przestawienie QUEUE_CONNECTION na Redisa nie wystarczy: potrzebny jest proces, który konsumuje zadania.
php artisan queue:work redis --tries=3Logi tych procesów leżą w storage/logs, ścieżce zwracanej przez storage_path() wśród ścieżek aplikacji. Na produkcji taki proces musi być nadzorowany, żeby wstawał po awarii albo po wdrożeniu. Zwykle służy do tego Supervisor, ale jednostka systemd też się nada. Pamiętaj o zrestartowaniu procesów po każdym wdrożeniu, inaczej dalej wykonują stary kod załadowany do pamięci:
php artisan queue:restartCzęste błędy
redis-cli -n 1 --scan.bind 127.0.0.1, gdy aplikacja stoi na tej samej maszynie, i dodaj requirepass, gdy tak już nie jest.