Redis comme cache applicatif Déployer Redis sur un VPS HolyCloud et l'utiliser comme cache sessions, objets et requêtes pour alléger PHP et MySQL. ~10 min de lecture Intermédiaire #redis #cache #php #performance Redis comme cache applicatif Redis est un magasin clé-valeur en mémoire, idéal pour le cache applicatif, les sessions PHP et les files d'attente légères. Sur un VPS Performance HolyCloud, il réduit la pression sur MySQL et PHP-FPM. Prérequis VPS avec 1 Go+ RAM libre pour Redis (ajustez maxmemory) Application compatible (Laravel, Symfony, WordPress avec plugin, PrestaShop, etc.) Accès sudo Pare-feu : port 6379 uniquement en local sauf cluster dédié Installation Redis sudo apt update sudo apt install -y redis-server redis-cli ping Configuration /etc/redis/redis.conf : bind 127.0.0.1 ::1 protected-mode yes maxmemory 512mb maxmemory-policy allkeys-lru appendonly yes sudo systemctl enable --now redis-server Sécurité minimale # mot de passe fort sudo redis-cli CONFIG SET requirepass "MOT_DE_PASSE_LONG" Persistez dans redis.conf : requirepass MOT_DE_PASSE_LONG Ne exposez jamais Redis sans mot de passe sur une IP publique. Cache objet PHP (exemple Predis) composer require predis/predis <?php $client = new Predis\Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, 'password' => getenv('REDIS_PASSWORD'), ]); $key = 'article:' . $id; if ($client->exists($key)) { $data = json_decode($client->get($key), true); } else { $data = fetch_from_database($id); $client->setex($key, 3600, json_encode($data)); } Sessions PHP dans Redis Installez l'extension : sudo apt install -y php-redis /etc/php/8.3/fpm/php.ini : session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379?auth=MOT_DE_PASSE_LONG" Redémarrez PHP-FPM. Vérifiez : redis-cli -a MOT_DE_PASSE_LONG KEYS 'PHPREDIS_SESSION:*' | head Laravel .env : CACHE_DRIVER=redis SESSION_DRIVER=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=MOT_DE_PASSE_LONG php artisan config:cache php artisan cache:clear WordPress (plugin object cache) Utilisez un plugin Redis Object Cache reconnu. wp-config.php : define('WP_REDIS_HOST', '127.0.0.1'); define('WP_REDIS_PASSWORD', 'MOT_DE_PASSE_LONG'); define('WP_CACHE', true); Stratégies TTL | Type de donnée | TTL suggéré | |----------------|-------------| | Page HTML fragment | 60–300 s | | Config / menus | 3600 s | | Session utilisateur | 24 h (sliding) | | Compteur rate-limit | 60 s | Invalidez le cache à l'écriture : $client->del(['article:' . $id, 'articles:list']); Monitoring rapide redis-cli -a MOT_DE_PASSE_LONG INFO memory redis-cli -a MOT_DE_PASSE_LONG DBSIZE redis-cli -a MOT_DE_PASSE_LONG --latency Alerte si used_memory approche maxmemory — évictions LRU. Haute disponibilité (rappel) Sur un VPS unique, Redis est un point unique de défaillance. Pour la production critique, envisagez Redis sur un second VPS, réplication, ou service managé — au-delà de ce guide mono-nœud. Dépannage | Symptome | Action | |----------|--------| | OOM Redis | Augmenter RAM VPS ou baisser maxmemory | | Connexion refusée | bind, pare-feu, mauvais mot de passe | | Données « fantômes » | TTL manquant ou invalidation oubliée | | Latence élevée | redis-cli --latency, gros values → compression | Besoin d'aide ? Ticket HolyCloud avec INFO, plan RAM et stack (PHP version, CMS) si vous hésitez sur la taille maxmemory. Suite de la lecture Article précédent Prometheus + Grafana + node_exporter Lire Article suivant TCP BBR et sysctl réseau Lire