Pourquoi le débat Redis/Valkey revient en 2026
En mars 2024, Redis Ltd. a basculé vers la licence BSL (Business Source License), exclue des définitions open source OSI. La réaction a été immédiate : Linux Foundation a coordonné la création de Valkey avec le soutien de Meta, Google, AWS et plusieurs grands hébergeurs. Le fork est parti du code Redis 7.2 sous licence BSD. En mai 2025, Redis est revenu à une licence OSI-compatible en adoptant l'AGPLv3 — un signal positif, mais l'AGPLv3 est un copyleft fort : tout logiciel qui l'intègre doit publier son code source, ce qui pose des contraintes réelles pour les hébergeurs revendeurs et les éditeurs de logiciels commerciaux. Pendant ce temps, Valkey 9.1 est devenu le paquet par défaut sur Ubuntu 24.04+, Debian 13 et Fedora 40+, consolidant son adoption à l'échelle des distributions majeures.
Redis vs Valkey : les différences clés en 2026
Faites défiler le tableau
| Critère | Redis 8 (AGPLv3) | Valkey 9.1 (BSD) |
|---|---|---|
| Licence | AGPLv3 — copyleft fort, embarquement commercial restreint | BSD — permissive, usage commercial libre |
| Performance | Référence historique | +8 % ops/sec, -22 % latence P99, -20 % mémoire |
| Compatibilité protocole | 100 % Redis protocol | 100 % protocole Redis — remplacement transparent |
| Support distros | Non installé par défaut | Ubuntu 24.04+, Debian 13, Fedora 40+ — paquet natif |
| Modules | Redis Stack payant (RedisJSON, RediSearch…) | API de modules compatible, écosystème en cours |
| Adoption cloud | AWS ElastiCache reste Redis | GCP Memorystore Valkey disponible, AWS se dirige vers Valkey |
| Idéal pour | Projets existants dépendant des modules Redis Stack | Nouveaux projets, hébergeurs, stacks souveraines, distros modernes |
Compatibilité protocole : RESP2 et RESP3
La question la plus fréquente avant une migration est celle du protocole. Valkey implémente à 100 % le Redis Serialization Protocol dans ses deux versions.
RESP2 (le protocole historique) est intégralement supporté. Toutes vos bibliothèques clientes existantes — ioredis, Predis, redis-py, Jedis, StackExchange.Redis — communiquent avec Valkey sans aucune modification de code ou de configuration. Le remplacement est transparent au niveau du socket.
RESP3 (introduit avec Redis 6.0) est également supporté par Valkey 9.1. Ce protocole apporte des types de réponse enrichis — maps, sets, doubles, booléens, attributs — qui permettent aux clients modernes de réduire les aller-retours de parsing. Les bibliothèques qui activent RESP3 par défaut (ioredis 5+, redis-py 5+) fonctionnent sans modification avec Valkey.
Un point à vérifier : si votre client négocie le protocole via la commande HELLO, Valkey répond de manière identique à Redis. La commande HELLO 3 active RESP3 sur les deux systèmes de la même façon. Vous pouvez le confirmer sur une instance Valkey existante avec valkey-cli HELLO 3.
Format de données : RDB et AOF entièrement compatibles
Le format des fichiers de persistance est l'autre point critique d'une migration. Valkey lit et écrit les mêmes formats que Redis, sans conversion intermédiaire.
RDB (Redis Database Backup) : Valkey supporte les versions RDB 6, 7, 8, 9 et 10. Un fichier dump.rdb exporté depuis Redis 7.x ou 8.x s'importe directement dans Valkey 9.1 en le plaçant dans le répertoire dir de Valkey avant le démarrage. Aucun outil de conversion n'est nécessaire.
AOF (Append-Only File) : le format de journal AOF est identique entre Redis et Valkey. Si vous utilisez la persistance AOF ou le mode mixte (aof-use-rdb-preamble yes), vos fichiers existants sont lus par Valkey sans modification. La commande BGSAVE et BGREWRITEAOF se comportent de la même façon.
Format de données en mémoire : les structures de données Valkey — strings, hashes, lists, sets, sorted sets, streams, HyperLogLog, bitmaps, geospatial — sont identiques à celles de Redis. Les encodages internes (ziplist, listpack, skiplist, quicklist, intset) ont été maintenus à parité. Un client qui stocke un hash dans Redis le récupère intact depuis Valkey.
API de commandes : ce qui est identique, ce qui diffère
L'ensemble des commandes Redis est supporté par Valkey. Les catégories principales — strings, hashes, lists, sets, sorted sets, streams, pub/sub, transactions, scripting Lua, keyspace notifications, cluster — fonctionnent de façon identique.
Scripting Lua : Valkey supporte EVAL, EVALSHA et SCRIPT LOAD. Les scripts Lua écrits pour Redis s'exécutent sans modification sur Valkey. La bibliothèque cjson et les fonctions redis.call() sont disponibles, avec une nuance : Valkey a introduit la compatibilité avec l'alias valkey.call() pour les nouveaux scripts, mais redis.call() reste fonctionnel pour la rétrocompatibilité.
Cluster : le protocole Gossip et les commandes de gestion de cluster (CLUSTER INFO, CLUSTER NODES, CLUSTER MEET, CLUSTER FAILOVER) sont identiques. Un nœud Valkey peut participer à un cluster existant Redis — cependant, un cluster mixte Redis/Valkey n'est pas recommandé en production : les versions majeures peuvent introduire des différences de comportement sur les commandes internes. Migrer les nœuds un par un reste la voie sûre.
ACL (Access Control Lists) : le format des règles ACL est identique. Un fichier aclfile exporté depuis Redis (ACL SAVE) peut être rechargé dans Valkey. Les commandes ACL LIST, ACL SETUSER, ACL GETUSER fonctionnent de façon identique.
Keyspace notifications : la configuration notify-keyspace-events et les patterns de souscription (__keyevent@*__:set, etc.) sont identiques. Vos consumers pub/sub qui écoutent les événements keyspace n'ont pas à être modifiés.
Ce qui diffère : les modules Redis Stack propriétaires — RedisJSON, RediSearch, RedisTimeSeries, RedisBloom — ne sont pas disponibles dans Valkey. Des alternatives open source existent (FalkorDB pour le graph, d'autres implémentations de modules JSON), mais l'API n'est pas garantie identique. Si votre code appelle des commandes comme JSON.SET, FT.SEARCH ou TS.ADD, la migration directe n'est pas encore possible.
Configuration : les paramètres à vérifier lors du passage
La syntaxe de valkey.conf est identique à celle de redis.conf. Vous pouvez copier votre fichier de configuration existant sans réécriture. Quelques points méritent une vérification spécifique.
Chemins par défaut : Valkey utilise /etc/valkey/valkey.conf et /var/lib/valkey/ au lieu de /etc/redis/ et /var/lib/redis/. Si vous copiez votre configuration, mettez à jour les directives dir, logfile, pidfile et aclfile pour qu'elles pointent vers les chemins Valkey.
Nom du service systemd : le service s'appelle valkey (pas redis-server). Les commandes sont donc systemctl start valkey, systemctl enable valkey.
TLS : Valkey supporte TLS sur les connexions clientes (tls-port, tls-cert-file, tls-key-file, tls-ca-cert-file) de façon identique à Redis 6+. Si vous avez activé TLS dans Redis, la même configuration fonctionne dans Valkey sans modification de vos clients.
maxmemory et éviction : les politiques d'éviction (allkeys-lru, volatile-lru, allkeys-lfu, noeviction, etc.) sont identiques. Votre politique actuelle se transfère directement.
Bind et protection-mode : Valkey démarre en mode protégé par défaut (comme Redis), qui refuse les connexions non-loopback si aucun mot de passe n'est défini. Votre configuration de bind et requirepass (ou ACL) se transpose directement.
Bibliothèques clientes : ce que vous ne changez pas
C'est l'un des points forts de Valkey : aucune bibliothèque cliente ne nécessite de modification pour se connecter à Valkey. Le protocole étant identique, le client ne sait pas s'il parle à Redis ou à Valkey.
JavaScript / Node.js : ioredis, node-redis (redis npm), redis — tous fonctionnent. Changez uniquement l'hôte et le port dans votre configuration de connexion.
Python : redis-py (le paquet redis sur PyPI), aioredis — compatibles. La connexion Redis(host='valkey-host', port=6379) fonctionne sans autre changement.
PHP : phpredis (extension C), Predis (pure PHP) — compatibles. Aucun changement de code.
Java : Jedis, Lettuce, Redisson — compatibles. Adaptez uniquement les paramètres de connexion.
.NET : StackExchange.Redis — compatible. Même chaîne de connexion, hôte et port mis à jour.
Go : go-redis, rueidis — compatibles.
Si vous utilisez une abstraction comme Laravel Cache (CACHE_DRIVER=redis), Django django-redis, Spring Data Redis ou Symfony Cache avec l'adaptateur Redis, ces couches d'abstraction se reconnectent à Valkey sans modification de code — seul le DSN de connexion change.
Quand choisir Valkey plutôt que Redis
Valkey s'impose naturellement dans plusieurs contextes. Les hébergeurs et revendeurs sont les premiers concernés : l'AGPLv3 de Redis impose de publier le code de tout service qui l'intègre, une contrainte incompatible avec la plupart des offres commerciales. Les nouveaux projets n'ont aucune raison de partir sur Redis : Valkey est le paquet par défaut des distributions récentes, la performance est supérieure et la licence est sans restriction. Les stacks RGPD et souveraineté bénéficient aussi de la gouvernance Linux Foundation, plus neutre qu'un éditeur privé. Enfin, si vous n'utilisez pas les modules propriétaires Redis Stack (RedisJSON, RediSearch, RedisTimeSeries), la migration est transparente — toutes vos librairies et configurations existantes restent valides.
Migrer de Redis vers Valkey en 4 étapes
Vérifier la compatibilité
Exécutez
redis-cli INFO server | grep redis_versionpour identifier votre version actuelle. Listez vos dépendances et confirmez qu'aucune n'utilise les modules Redis Stack (RedisJSON, RediSearch, RedisTimeSeries). Si c'est le cas, la migration directe n'est pas encore recommandée. Vérifiez aussi vos scripts Lua :redis.call()reste compatible, mais repérez tout appel à des commandes de module propriétaire.Installer Valkey
Sur Ubuntu 24.04+ et Debian 13, Valkey est disponible dans les dépôts natifs :
apt install valkey. Sur Fedora 40+,dnf install valkey. Sur les distributions plus anciennes, ajoutez le dépôt officiel Valkey avant l'installation. Le paquet installe égalementvalkey-cli,valkey-benchmarketvalkey-server— des outils fonctionnellement identiques à leurs homologues Redis.Copier la configuration et les données
La syntaxe de configuration est identique entre Redis et Valkey. Copiez votre fichier et mettez à jour les chemins :
cp /etc/redis/redis.conf /etc/valkey/valkey.conf, puis adaptezdir,logfile,pidfilepour pointer vers/var/lib/valkey/et/var/log/valkey/. Exportez vos données Redis via un snapshot RDB (redis-cli --rdb /tmp/dump.rdb) puis placez le fichier dans le répertoiredirde Valkey. Si vous utilisez l'AOF, copiez également le fichier.aofdans ce même répertoire.Démarrer Valkey et valider
Démarrez le service (
systemctl start valkey), puis validez avecvalkey-cli ping— vous devez obtenirPONG. Vérifiez que vos données sont présentes avecvalkey-cli DBSIZEet comparez avec le nombre de clés de votre ancienne instance Redis. Testez votre application sur quelques requêtes représentatives avant de couper Redis. Si vous utilisez des ACL, rechargez votre fichier ACL exporté avecvalkey-cli ACL LOAD. Toutes vos bibliothèques clientes (ioredis, Predis, redis-py) sont compatibles sans modification — changez uniquement l'hôte de connexion.
Valkey inclut valkey-benchmark, fonctionnellement identique à redis-benchmark. Avant toute migration en production, validez les performances sur votre matériel avec valkey-benchmark -n 100000 -q. Cette commande envoie 100 000 requêtes et affiche le résumé des ops/sec pour chaque type de commande. Résultat attendu : des chiffres supérieurs à votre ancienne instance Redis sur le même serveur. Pour tester spécifiquement les pipelining et RESP3, ajoutez le flag --pipe ou -3 selon votre version de client.
Ce qui ne change pas lors d'une migration Redis → Valkey
- Toutes vos bibliothèques clientes (ioredis, redis-py, Predis, Jedis, StackExchange.Redis, go-redis) — aucune modification de code
- Le protocole de communication : RESP2 et RESP3 sont intégralement supportés
- Vos fichiers de persistance RDB et AOF — lisibles par Valkey sans conversion
- La syntaxe de
redis.conf— copiez le fichier et mettez à jour les chemins - Vos scripts Lua —
redis.call()fonctionne,valkey.call()est en plus disponible - Vos règles ACL exportées depuis Redis — rechargées directement dans Valkey
- La configuration TLS, les politiques d'éviction mémoire et les keyspace notifications
- Les commandes
redis-clihabituelles —valkey-cliles accepte toutes
Et vos autres bases de données sur VPS ?
Valkey n'est qu'une pièce de votre stack de données. Si vous hébergez également une base relationnelle, consultez notre guide sur MariaDB sur VPS : configuration, performances et réplication. Pour le moteur de recherche full-text, Elasticsearch sur VPS couvre l'installation, le tuning mémoire et les index en production. Chaque composant mérite une configuration adaptée à votre charge — nos VPS Cloud vous donnent la maîtrise complète de votre environnement.