Guide de déploiement

Héberger Redis sur un VPS : guide complet

Déployer sur un VPS Cloud →

Tutoriel

Héberger Redis sur un VPS : guide complet

Bases de données10 min de lecture7 étapes

Redis est le couteau suisse de la performance : cache, sessions, files de jobs, compteurs temps réel et pub/sub. L'auto-héberger sur un VPS vous donne un contrôle total de la mémoire et du réseau qui le sépare de votre app, sans payer le prix fort des offres Redis managées. Ce guide couvre le déploiement complet — de la configuration sécurité à la persistance, en passant par le dépannage des erreurs les plus fréquentes.

Sommaire· Pourquoi auto-héberger Redis sur un VPS1/8
  1. 01Pourquoi auto-héberger Redis sur un VPS
  2. 02Les bénéfices concrets d'un Redis auto-hébergé
  3. 03Prérequis matériels et logiciels
  4. 04Déployer Redis avec Docker en production
  5. 05Dépannage : les erreurs les plus fréquentes
  6. 06Haute disponibilité : Sentinel et Cluster
  7. 07Mises à jour et alternative Valkey
  8. 08La documentation officielle

Pourquoi auto-héberger Redis sur un VPS

Redis vit en mémoire : sa performance dépend directement de la RAM et de la latence réseau. Les offres managées facturent chaque Go de RAM très cher et imposent des plafonds de connexions. Sur un VPS, vous dimensionnez la RAM selon votre besoin réel, vous configurez librement maxmemory et la politique d'éviction (allkeys-lru, volatile-ttl...), et vous activez la persistance RDB et/ou AOF selon votre tolérance à la perte de données. Pour un cache applicatif, un broker de jobs (Sidekiq, BullMQ, Celery) ou un store de sessions, un Redis collé à votre application sur le même réseau privé élimine la latence inter-datacenter et réduit drastiquement le coût.

Les bénéfices concrets d'un Redis auto-hébergé

  • Latence sub-milliseconde si Redis tourne sur le même VPS ou le même réseau privé que votre app.
  • Contrôle de maxmemory et de la politique d'éviction selon votre usage cache ou file de jobs.
  • Persistance au choix : RDB (snapshots), AOF (journal), ou les deux pour la durabilité.
  • Coût RAM sans surfacturation : vous payez le forfait VPS, pas le Go de mémoire premium.
  • Modules libres : RediSearch, RedisJSON, RedisBloom selon vos besoins.
  • Aucun plafond arbitraire sur le nombre de connexions clients simultanées.

Prérequis matériels et logiciels

Redis étant en mémoire, c'est la RAM qui compte, pas le CPU. Pour un cache modeste ou un store de sessions, 1 vCPU et 1 à 2 Go de RAM suffisent — Redis open source est peu gourmand en CPU car il est mono-threadé pour les commandes (les I/O réseau sont asynchrones). Si Redis sert de broker pour des milliers de jobs en file ou stocke des datasets en mémoire de plusieurs Go, dimensionnez la RAM à au moins le double de votre maxmemory cible pour absorber la copie-sur-écriture lors des snapshots RDB : pendant un BGSAVE, le processus fils peut dupliquer temporairement les pages modifiées.

Côté disque, prévoyez au moins 2× la taille de votre dataset si vous activez la persistance RDB ou AOF, plus de l'espace pour la rotation des logs. Côté logiciel : Ubuntu 22.04/24.04 LTS, Docker et Compose v2, un volume persistant pour AOF/RDB si vous activez la persistance, et le paramétrage vm.overcommit_memory=1 sur l'hôte pour éviter les échecs de fork lors des sauvegardes. La désactivation des Transparent Huge Pages (echo never > /sys/kernel/mm/transparent_hugepage/enabled) est également recommandée : Redis la signale explicitement au démarrage si elle est active, car elle peut provoquer des latences et une consommation mémoire anormale.

Déployer Redis avec Docker en production

  1. Préparer l'hôte

    Installez Docker, puis réglez vm.overcommit_memory=1 via sysctl pour fiabiliser les snapshots, et désactivez les Transparent Huge Pages. Fermez le port 6379 vers l'extérieur : un Redis exposé sans mot de passe est une cible classique de cryptomineurs.

    # Persistent via sysctl.conf
    echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
    sysctl -p
    # Désactiver THP
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
  2. Écrire le docker-compose.yml

    Déclarez un service redis:7-alpine avec une commande personnalisée pointant vers un redis.conf monté en lecture seule. Activez requirepass, définissez maxmemory et maxmemory-policy, et montez un volume pour /data si vous voulez la persistance.

    services:
      redis:
        image: redis:7-alpine
        command: redis-server /etc/redis/redis.conf
        volumes:
          - ./redis.conf:/etc/redis/redis.conf:ro
          - redis_data:/data
        restart: unless-stopped
        ports:
          - "127.0.0.1:6379:6379"
    volumes:
      redis_data:
  3. Configurer la sécurité

    Dans redis.conf, la sécurité repose sur plusieurs niveaux complémentaires. Le premier est le binding réseau : bind 127.0.0.1 ou votre IP de réseau privé — ne jamais écouter sur 0.0.0.0 sans protection supplémentaire. Le deuxième est l'authentification : requirepass VOTRE_MOT_DE_PASSE_FORT pour Redis 6 et antérieur ; pour Redis 7, préférez les ACL qui permettent de créer des utilisateurs avec des permissions granulaires :

    bind 127.0.0.1
    requirepass VOTRE_MOT_DE_PASSE_FORT
    # ACL Redis 7 : utilisateur lecture seule pour votre app
    aclfile /etc/redis/users.acl
    # Désactiver les commandes dangereuses
    rename-command FLUSHALL ""
    rename-command CONFIG ""
    rename-command DEBUG ""

    Le fichier users.acl peut déclarer :

    user app_user on >MOT_DE_PASSE ~* +@read +@write -@dangerous
    user default off

    Pour un accès distant chiffré, activez le TLS natif Redis (disponible depuis Redis 6) :

    tls-port 6380
    tls-cert-file /certs/redis.crt
    tls-key-file /certs/redis.key
    tls-ca-cert-file /certs/ca.crt

    Alternativement, un tunnel SSH ou un VPN suffit pour la plupart des cas sans complexité TLS.

  4. Choisir la stratégie de persistance

    Redis propose deux mécanismes de persistance, combinables selon vos besoins.

    RDB (snapshot) : Redis écrit un instantané du dataset sur disque à intervalles configurables. Rapide au redémarrage, mais vous perdez les données écrites depuis le dernier snapshot en cas de crash.

    # Snapshot si 1 clé change en 900 s, 10 clés en 300 s, 10000 clés en 60 s
    save 900 1
    save 300 10
    save 60 10000

    AOF (Append-Only File) : chaque commande d'écriture est journalisée. Plus sûr, légèrement plus lent. appendfsync everysec est le bon compromis : au pire 1 seconde de données perdues.

    appendonly yes
    appendfsync everysec
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb

    Combinaison RDB + AOF : au redémarrage, Redis utilise l'AOF (plus complet), et le RDB accélère les sauvegardes complètes périodiques. C'est la stratégie recommandée pour les brokers de jobs critiques.

    Pour un pur cache où la perte de données est acceptable, désactivez la persistance : save "" et appendonly no — vous gagnez en performance et en espace disque.

  5. Connecter votre application

    Lancez avec docker compose up -d et testez avec docker compose exec redis redis-cli -a VOTRE_PASS ping. Faites pointer votre application vers le réseau Docker interne plutôt que vers une IP publique, pour la latence et la sécurité.

    # Test de connectivité
    docker compose exec redis redis-cli -a VOTRE_PASS ping
    # PONG
    
    # Vérifier la configuration active
    docker compose exec redis redis-cli -a VOTRE_PASS CONFIG GET maxmemory

    Pour les applications sur le même hôte Docker, utilisez le nom du service comme hôte (redis:6379) plutôt que localhost ou l'IP publique.

  6. Surveiller la mémoire

    Surveillez used_memory et evicted_keys via redis-cli INFO. Si les évictions montent, augmentez la RAM ou affinez la politique. Configurez une alerte quand l'utilisation mémoire dépasse 80% de maxmemory.

    # Vue d'ensemble santé Redis
    redis-cli -a VOTRE_PASS INFO memory | grep -E 'used_memory_human|maxmemory_human|mem_fragmentation_ratio'
    redis-cli -a VOTRE_PASS INFO stats | grep -E 'evicted_keys|keyspace_hits|keyspace_misses'

    Un mem_fragmentation_ratio supérieur à 1,5 indique une fragmentation significative : un MEMORY PURGE ou un redémarrage progressif peut être utile.

  7. Se connecter la première fois

    Ouvrez l'URL : RedisInsight s'affiche directement, SANS aucune demande d'identifiant (vous acceptez seulement les conditions d'utilisation au premier écran), et votre base Redis locale y est déjà accessible en lecture/écriture. N'attachez pas de domaine public à cette interface sans protection en amont.

Dépannage : les erreurs les plus fréquentes

Voici les erreurs que vous rencontrerez le plus souvent lors de l'exploitation de Redis sur VPS, avec leur cause et leur remède.

  • MISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist on disk — Redis tente un snapshot mais le fork échoue. Cause : vm.overcommit_memory est à 0 sur l'hôte. Correction : sysctl vm.overcommit_memory=1 (permanent dans /etc/sysctl.conf). Si vous utilisez Docker, ce paramètre doit être posé sur l'hôte Docker, pas dans le conteneur.
  • ERR max number of clients reached — Le nombre de connexions simultanées dépasse maxclients (défaut : 10 000). Causes fréquentes : pool de connexions mal configuré côté application (Sidekiq, Laravel Horizon, etc.) ou connexions non fermées. Correction : augmentez maxclients dans redis.conf et vérifiez la configuration du pool côté app. La commande redis-cli CLIENT LIST liste les connexions actives.
  • OOM Killer tue le processus Redis — Le noyau Linux tue Redis faute de mémoire libre. Cause : maxmemory non défini ou trop généreux, couplé à la copie-sur-écriture du fork RDB. Correction : fixez maxmemory à 60-70 % de la RAM disponible, choisissez une politique d'éviction (maxmemory-policy allkeys-lru pour un cache, noeviction pour un broker), et prévoyez 2× le dataset pour le fork RDB. Surveillez /var/log/syslog pour les messages Out of memory: Kill process.
  • Could not create server TCP listening socket 0.0.0.0:6379: bind: Address already in use — Un autre processus occupe le port 6379. Identifiez-le avec ss -tlnp | grep 6379 et arrêtez-le, ou changez le port Redis dans votre configuration. Sur les VPS avec une instance Redis installée via apt, le service système peut conflicuer avec votre conteneur Docker.

Haute disponibilité : Sentinel et Cluster

Pour les workloads critiques où une indisponibilité de Redis est inacceptable, deux solutions existent.

Redis Sentinel est la solution de haute disponibilité pour une architecture maître/répliques. Déployez trois nœuds Sentinel sur trois VPS distincts : Sentinel surveille le maître, détecte sa défaillance, et promeut automatiquement un réplique. Vos applications se connectent via le service Sentinel plutôt que directement au maître — elles sont transparentes au basculement. Sentinel convient pour la plupart des cas : cache, sessions, brokers de jobs avec durabilité.

Redis Cluster partitionne les données sur plusieurs nœuds (sharding horizontal) et offre une haute disponibilité intégrée. Il exige au minimum 6 nœuds (3 maîtres + 3 répliques) et une adaptation de votre client. À réserver aux datasets dépassant la RAM d'un seul serveur ou aux workloads nécessitant un débit d'écriture très élevé.

Pour la grande majorité des usages sur VPS, Sentinel sur 3 nœuds est la bonne réponse : plus simple à opérer, compatible avec tous les clients Redis standards, et suffisant pour des datasets de quelques dizaines de Go.

Mises à jour et alternative Valkey

Sur les versions. Redis 7.4 est la branche stable LTS en cours (7.4.11 au moment de la rédaction). Redis 8 est la dernière version majeure GA, publiée en mai 2025, qui a également marqué l'adoption de l'AGPLv3 comme troisième option de licence — aux côtés du RSALv2 et du SSPLv1 adoptés en mars 2024. Pour une migration de Redis 7.x vers Redis 8, consultez les release notes officielles : des changements de comportement sur la gestion mémoire et les ACL sont à anticiper.

Sur la licence. En mars 2024, Redis Ltd. a abandonné la licence BSD 3-Clause pour une double licence RSALv2 + SSPLv1 (non approuvée OSI). En réponse, la Linux Foundation a créé Valkey le 28 mars 2024 — un fork de Redis 7.2.4 sous licence BSD 3-Clause, soutenu par AWS, Google Cloud, Oracle et d'autres membres fondateurs. Valkey suit une trajectoire de développement indépendante et publie ses propres releases. Si votre usage implique de la redistribution ou des restrictions de licence, ou si vous souhaitez un fork 100 % open source au sens OSI, Valkey est une alternative directe : les APIs et protocoles sont compatibles, et la migration est généralement transparente. Un article dédié compare les deux projets en détail : Valkey vs Redis en 2026 : faut-il migrer ?

Pour les usages privés courants (cache d'application, broker de jobs, store de sessions sur votre propre infrastructure), Redis 7.x ou 8 reste pleinement utilisable sans friction de licence.

Surveillez le ratio keyspace_hits / keyspace_misses via INFO stats : un taux de hit faible signifie que votre cache est mal dimensionné ou que vos TTL sont trop courts. Pour les workloads critiques, déployez Redis Sentinel sur trois VPS afin d'obtenir un failover automatique : si le maître tombe, un esclave est promu sans intervention, et vos applications sont redirigées via le service Sentinel.

La documentation officielle

Pour la configuration avancée et les options propres à l'outil, référez-vous à la documentation officielle de Redis. Ce guide couvre la mise en ligne sur VPS ; la doc éditeur reste la référence pour les réglages fins, les mises à jour majeures et les cas d'usage spécifiques.

Faites tourner Redis à pleine vitesse

Le VPS Cloud ServOrbit avec template Docker et RAM dédiée vous donne la latence et la mémoire nécessaires pour un Redis performant, cache ou broker de jobs.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet