Chapitre 5 sur 5

Installer Redis sur Debian 13 et le brancher à Laravel

vérifié le 7 septembre 2026 · 4 min

Réponse rapide

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

bash
sudo apt update
sudo apt install -y redis-server php-redis

Deux paquets, deux rôles : redis-server est le serveur, php-redis l’extension qui permet à PHP de lui parler. Vérifiez les deux :

bash
redis-server --version
redis-cli ping
php -r 'echo extension_loaded("redis") ? phpversion("redis") : "absente", PHP_EOL;'
code
Redis server v=8.0.2 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64
PONG
6.2.0

PONG confirme que le service tourne et répond. Activez-le au démarrage :

bash
sudo systemctl enable --now redis-server
sudo systemctl status redis-server

Sé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.

bash
sudo nano /etc/redis/redis.conf
/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_aleatoire
bash
sudo systemctl restart redis-server

Si 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 :

.env
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
CACHE_DRIVER et QUEUE_DRIVER n’existent plus

C’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 :

bash
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"));
'
code
client  : phpredis
cache   : redis
queue   : redis
session : redis

Vérifier que ça fonctionne vraiment

Un réglage accepté n’est pas un réglage qui marche. Écrivez une valeur et relisez-la :

bash
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 ».

code
Cache::get   : valeur
Redis::ping  : 1
version      : 8.0.2
Pourquoi vos clés semblent introuvables

Un 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 :

bash
redis-cli -n 1 --scan
code
laravel-database-laravel-cache-gk_test

Le 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 :

bash
composer require predis/predis
.env
REDIS_CLIENT=predis

Traiter les files d’attente

Basculer QUEUE_CONNECTION sur Redis ne suffit pas : il faut un processus qui consomme les tâches.

bash
php artisan queue:work redis --tries=3

Les 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 :

bash
php artisan queue:restart

Erreurs fréquentes

CACHE_DRIVER et QUEUE_DRIVER n’existent plus Renommés CACHE_STORE (Laravel 11) et QUEUE_CONNECTION (Laravel 5.7). Une clé inconnue n’émet aucune erreur : l’application continue simplement sur son pilote par défaut.
Chercher les clés dans la base 0 Laravel écrit le cache dans la base 1. Utilisez redis-cli -n 1 --scan.
Oublier les deux préfixes La clé porte le préfixe de connexion et celui du cache : laravel-database-laravel-cache-…
Installer predis par réflexe Depuis Laravel 11, le client par défaut est phpredis, une extension C plus rapide. predis ne se justifie que sans accès root.
Redis exposé sans mot de passe Gardez 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_CONNECTION=redis sans processus de traitement Les tâches s’empilent sans jamais s’exécuter tant qu’aucun queue:work ne tourne.
Newsletter

Les nouveaux tests, tutoriels et projets, par e-mail.

Tests reproductibles, code versionné, résultats datés. Jamais de spam.