Installare Redis su Debian 13 e collegarlo a Laravel
verificato il 7 Settembre 2026 · 4 min
Installa redis-server e l'estensione php-redis, poi imposta nel .env: REDIS_CLIENT=phpredis, CACHE_STORE=redis, SESSION_DRIVER=redis e QUEUE_CONNECTION=redis. Attenzione: CACHE_DRIVER e QUEUE_DRIVER non esistono più, una chiave sconosciuta viene ignorata senza errore e l'applicazione resta sul suo driver predefinito.
Redis fa da cache, da archivio delle sessioni e da coda di lavori per un’applicazione Laravel. Debian 13 fornisce Redis 8, e Laravel 13 ci si collega di default con l’estensione phpredis, più rapida della libreria PHP predis raccomandata per anni.
Questo capitolo prosegue l’installazione di Laravel su Debian, nel percorso Sviluppo web. Installazione e integrazione verificate su Debian 13 « trixie » con Laravel 13.30.1, il 2 settembre 2026.
Installare Redis e l’estensione PHP
sudo apt update
sudo apt install -y redis-server php-redisDue pacchetti, due ruoli: redis-server è il server, php-redis l’estensione che permette a PHP di parlargli. Controlla entrambi:
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 conferma che il servizio gira e risponde. Attivalo all’avvio:
sudo systemctl enable --now redis-server
sudo systemctl status redis-serverMettere in sicurezza prima di andare avanti
Un Redis esposto senza password su un’interfaccia pubblica è leggibile e modificabile da chiunque. È un incidente classico, e la configurazione predefinita di Debian protegge già l’essenziale, ma vale la pena controllarla.
sudo nano /etc/redis/redis.conf# ascolta solo sull'interfaccia di loopback
bind 127.0.0.1 -::1
# rifiuta le connessioni non autenticate provenienti dall'esterno
protected-mode yes
# password, indispensabile appena Redis non è più sulla stessa macchina
requirepass un_mot_de_passe_long_et_aleatoiresudo systemctl restart redis-serverSe l’applicazione e Redis stanno sulla stessa macchina, tieni bind 127.0.0.1: è la configurazione più sicura, e la password diventa una seconda barriera invece dell’unica.
Configurare Laravel
Le chiavi del file .env hanno cambiato nome nel corso delle versioni. Ecco quelle di Laravel 13, così come compaiono nel file generato durante l’installazione:
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redisÈ l’errore più frequente su questo argomento, ed è silenzioso: una chiave sconosciuta nel .env non provoca nessun errore, l’applicazione continua semplicemente a usare il suo driver predefinito. QUEUE_DRIVER è stato rinominato QUEUE_CONNECTION già in Laravel 5.7, e CACHE_DRIVER è diventato CACHE_STORE in Laravel 11.
Ricarica la configurazione e controlla che cosa usa davvero l’applicazione. Attenzione: la cache di configurazione congela questi valori:
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 : redisVerificare che funzioni davvero
Un’impostazione accettata non è un’impostazione che funziona. Scrivi un valore e rileggilo:
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"]);
'Qui serve il nome completo della facade: una volta installata l’estensione phpredis, Redis designa la classe dell’estensione, Laravel non registra più il suo alias, e un semplice Redis::ping() fallisce con « Non-static method Redis::ping() cannot be called statically ».
Cache::get : valeur
Redis::ping : 1
version : 8.0.2Un redis-cli --scan sul database 0 non restituisce niente, e se ne conclude che la cache non funziona. In realtà Laravel scrive la cache nel database 1 e sovrappone due prefissi. La chiave dell’esempio qui sopra è registrata con questo nome esatto:
redis-cli -n 1 --scanlaravel-database-laravel-cache-gk_testIl primo prefisso viene da database.redis.options.prefix, il secondo da cache.prefix. Il database 1 è fissato da database.redis.cache.database, il che isola la cache dalle code e dalle sessioni.
phpredis o predis
phpredis | predis | |
|---|---|---|
| Natura | estensione C | libreria PHP |
| Installazione | apt install php-redis | composer require predis/predis |
| Predefinito in Laravel 13 | sì | no |
| Accesso root al server | necessario | non necessario |
Preferisci phpredis ogni volta che amministri la macchina: la gestione del protocollo avviene in C. predis resta utile su un hosting condiviso, dove non puoi installare estensioni. In quel caso:
composer require predis/predisREDIS_CLIENT=predisGestire le code
Spostare QUEUE_CONNECTION su Redis non basta: serve un processo che consumi i job.
php artisan queue:work redis --tries=3I log di questi processi si trovano sotto storage/logs, il percorso restituito da storage_path() tra i percorsi dell’applicazione. In produzione il processo va supervisionato, per ripartire dopo un crash o un deploy. Supervisor è lo strumento abituale, ma anche una unit systemd fa il suo lavoro. Ricordati di riavviare i processi dopo ogni deploy, altrimenti continuano a eseguire il vecchio codice caricato in memoria:
php artisan queue:restartErrori frequenti
redis-cli -n 1 --scan.bind 127.0.0.1 quando l'applicazione è sulla stessa macchina, e aggiungi requirepass appena non lo è più.queue:work.