Installer Redis sur Debian 13 et le brancher à Laravel
vérifié le 7 septembre 2026 · 4 min
Installez redis-server et l’extension php-redis, puis renseignez dans le .env : REDIS_CLIENT=phpredis, CACHE_STORE=redis, SESSION_DRIVER=redis et QUEUE_CONNECTION=redis. Attention, CACHE_DRIVER et QUEUE_DRIVER n’existent plus : une clé inconnue est ignorée sans erreur et l’application garde son pilote par défaut.
Redis sert de cache, de magasin de sessions et de file d’attente pour une application Laravel. Debian 13 fournit Redis 8, et Laravel 13 s’y connecte par défaut avec l’extension phpredis, plus rapide que la bibliothèque PHP predis longtemps recommandée.
Ce chapitre prolonge l’installation de Laravel sur Debian, dans le parcours Développement web. Installation et intégration vérifiées sur Debian 13 « trixie » avec Laravel 13.30.1, le 2 septembre 2026.
Installer Redis et l’extension PHP
sudo apt update
sudo apt install -y redis-server php-redisDeux paquets, deux rôles : redis-server est le serveur, php-redis l’extension qui permet à PHP de lui parler. Vérifiez les deux :
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 confirme que le service tourne et répond. Activez-le au démarrage :
sudo systemctl enable --now redis-server
sudo systemctl status redis-serverSécuriser avant d’aller plus loin
Un Redis exposé sans mot de passe sur une interface publique est lisible et modifiable par n’importe qui. C’est un incident classique, et la configuration par défaut de Debian protège déjà l’essentiel, mais vérifiez-la.
sudo nano /etc/redis/redis.conf# n'écouter que sur la boucle locale
bind 127.0.0.1 -::1
# refuser les connexions non authentifiées venant de l'extérieur
protected-mode yes
# mot de passe, indispensable dès que Redis n'est plus sur la même machine
requirepass un_mot_de_passe_long_et_aleatoiresudo systemctl restart redis-serverSi l’application et Redis sont sur la même machine, gardez bind 127.0.0.1 : c’est la configuration la plus sûre, et le mot de passe devient une seconde barrière plutôt que la seule.
Configurer Laravel
Les clés du fichier .env ont changé de nom au fil des versions. Voici celles de Laravel 13, telles qu’elles figurent dans le fichier généré à l’installation :
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redisC’est l’erreur la plus fréquente sur ce sujet, et elle est silencieuse : une clé inconnue dans le .env ne provoque aucune erreur, l’application continue simplement d’utiliser son pilote par défaut. QUEUE_DRIVER a été renommé QUEUE_CONNECTION dès Laravel 5.7, et CACHE_DRIVER est devenu CACHE_STORE en Laravel 11.
Rechargez la configuration et contrôlez ce que l’application utilise réellement. Attention, le cache de configuration fige ces valeurs :
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 : redisVérifier que ça fonctionne vraiment
Un réglage accepté n’est pas un réglage qui marche. Écrivez une valeur et relisez-la :
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"]);
'Le nom complet de la façade est nécessaire ici : une fois l’extension phpredis installée, Redis désigne la classe de l’extension, Laravel n’enregistre plus son alias, et un simple Redis::ping() échoue sur « Non-static method Redis::ping() cannot be called statically ».
Cache::get : valeur
Redis::ping : 1
version : 8.0.2Un redis-cli --scan sur la base 0 ne renvoie rien, et l’on en conclut que le cache ne fonctionne pas. En réalité, Laravel écrit le cache dans la base 1 et empile deux préfixes. La clé de l’exemple ci-dessus est enregistrée sous ce nom exact :
redis-cli -n 1 --scanlaravel-database-laravel-cache-gk_testLe premier préfixe vient de database.redis.options.prefix, le second de cache.prefix. La base 1 est fixée par database.redis.cache.database, ce qui isole le cache des files d’attente et des sessions.
phpredis ou predis
phpredis | predis | |
|---|---|---|
| Nature | extension C | bibliothèque PHP |
| Installation | apt install php-redis | composer require predis/predis |
| Défaut Laravel 13 | oui | non |
| Accès root au serveur | nécessaire | pas nécessaire |
Préférez phpredis dès que vous administrez la machine : le traitement du protocole se fait en C. predis reste utile sur un hébergement mutualisé où vous ne pouvez pas installer d’extension. Dans ce cas :
composer require predis/predisREDIS_CLIENT=predisTraiter les files d’attente
Basculer QUEUE_CONNECTION sur Redis ne suffit pas : il faut un processus qui consomme les tâches.
php artisan queue:work redis --tries=3Les journaux de ces processus se trouvent sous storage/logs, chemin renvoyé par storage_path() parmi les chemins de l’application. En production, ce processus doit être supervisé pour redémarrer après un plantage ou un déploiement. Supervisor est l’outil habituel, mais une unité systemd fait aussi l’affaire. Pensez à relancer les processus après chaque déploiement, sinon ils continuent d’exécuter l’ancien code chargé en mémoire :
php artisan queue:restartErreurs fréquentes
redis-cli -n 1 --scan.bind 127.0.0.1 quand l’application est sur la même machine, et ajoutez requirepass dès que ce n’est plus le cas.queue:work ne tourne.