Introduction
Valkey est un fork open-source de Redis, créé en 2024 par la communauté Linux Foundation pour contrer les changements de licence de Redis vers RSAL/RSPL. Contrairement à Redis 8+, Valkey reste sous licence BSD-3 permissive, compatible à 100% avec les protocoles Redis, et optimisé pour les caches en mémoire, les files d'attente et les bases de données rapides.
Pourquoi l'utiliser en 2026 ? Les entreprises fuient Redis payant ; Valkey offre la même performance (sub-milliseconde), la persistance AOF/RDB, la réplication maître-esclave, sans verrouillage vendeur. Imaginez un coffre-fort ultra-rapide pour vos sessions utilisateur ou scores de jeu : c'est Valkey. Ce tutoriel beginner vous emmène de l'installation à un exemple client Python, avec 100% de code copier-collable. À la fin, vous gérezz des données en prod comme un pro. (128 mots)
Prérequis
- Système : Ubuntu 22.04+, macOS Ventura+ ou Windows avec WSL2
- Outils :
curl,build-essential(Linux), Homebrew (Mac), Python 3.10+ - Connaissances : Bases de terminal et JSON
- Temps : 15 minutes
Installation de Valkey via package manager
#!/bin/bash
# Ubuntu/Debian
sudo apt update
sudo apt install -y valkey
# macOS avec Homebrew
# brew install valkey
# Vérification
echo "Version installée :"
valkey-server --version
valkey-cli --versionCe script installe Valkey via le gestionnaire de paquets natif, le plus simple pour débutants. Sur Ubuntu, apt récupère la version stable ; sur Mac, commentez et décommentez Homebrew. Vérifiez toujours les versions pour compatibilité. Évitez les sources si pas besoin de bleeding-edge.
Vérification et premier démarrage
Exécutez le script d'installation. Vous verrez la version (ex: 8.0+). Valkey n'est pas lancé par défaut. Utilisez systemctl pour le service systemd sur Linux.
Démarrage du serveur Valkey
#!/bin/bash
# Démarrage en mode démon (background)
sudo systemctl start valkey-server
sudo systemctl enable valkey-server # Auto-start au boot
# Vérification du statut
sudo systemctl status valkey-server
# Ou démarrage manuel (dev/test)
# valkey-server --port 6379 --daemonize yesCe code active le service systemd pour un démarrage persistant, idéal en prod. enable assure le redémarrage automatique. Pour tests locaux, utilisez --daemonize yes. Sur Mac/Windows, adaptez avec brew services start valkey. Port par défaut : 6379.
Connexion et commandes de base
Connectez-vous via CLI. Testez PING pour confirmer : réponse PONG. Stockez/récupérez comme un dictionnaire géant.
Commandes CLI essentielles
valkey-cli
PING
SET user:42 "Alice" EX 3600 # Clé TTL 1h
GET user:42
DEL user:42
# Liste des clés
KEYS *
# Infos serveur
INFO server
EXITCes commandes forment le cœur : SET avec TTL pour expiration auto (comme un cookie), GET pour lecture, DEL pour suppression. KEYS * liste tout (OK en dev, lent en prod). INFO donne stats. Copiez-collez dans valkey-cli pour tester instantanément.
Configuration personnalisée
Par défaut, Valkey écoute localhost:6379 sans mot de passe. Créez un fichier de config pour prod : bind, requirepass, persistance.
Fichier de configuration Valkey
# /etc/valkey/valkey.conf (copiez-collez et adaptez)
port 6379
bind 127.0.0.1
requirepass "votre_mot_de_passe_ici"
# Persistance RDB (snapshot)
save 900 1
save 300 10
save 60 10000
dir /var/lib/valkey/
dbfilename dump.rdb
# Logs
logfile /var/log/valkey/valkey.log
# Max mémoire (limite)
maxmemory 256mb
maxmemory-policy allkeys-lruCe config complet sécurise (bind local + pass), persiste via RDB (snapshots auto), limite RAM à 256MB avec LRU (évite OOM). Éditez /etc/valkey/valkey.conf, puis sudo systemctl restart valkey-server. Testez avec -a pass dans CLI.
Redémarrage avec config et test auth
#!/bin/bash
sudo cp valkey.conf /etc/valkey/valkey.conf
sudo systemctl restart valkey-server
sudo systemctl status valkey-server
# Test avec auth
valkey-cli -a "votre_mot_de_passe_ici" ping
valkey-cli -a "votre_mot_de_passe_ici" CONFIG GET requirepassCopie la config, redémarre le service. Teste l'auth avec -a. Si CONFIG GET retourne le pass (masqué), c'est OK. Erreur courante : oubli du restart après édition config.
Utilisation avec un client Python
Valkey est compatible Redis clients. Installez redis-py (même API).
Exemple client Python complet
import redis
# Connexion (adaptez host/port/pass)
r = redis.Redis(host='localhost', port=6379, password='votre_mot_de_passe_ici', decode_responses=True)
# Test
r.ping()
print('PONG')
# Stockage liste (file d'attente)
r.lpush('tasks', 'tache1')
r.lpush('tasks', 'tache2')
print(r.lrange('tasks', 0, -1))
# Hash utilisateur
r.hset('user:42', mapping={'name': 'Alice', 'age': 30})
print(r.hgetall('user:42'))
# Expiration
r.set('temp', 'valeur', ex=10)
print(r.get('temp'))
import time
time.sleep(11)
print('Après expiration:', r.get('temp')) # None
r.close()Ce script complet démontre ping, listes (LPUSH/LRANGE pour queues), hashes (HSET/HGETALL pour objets), TTL. decode_responses=True évite bytes. Lancez pip install redis avant. Parfait pour intégrer dans Flask/Django.
Bonnes pratiques
- Sécurisez toujours :
requirepass+bind 127.0.0.1ou firewall ; TLS en prod. - Limitez mémoire :
maxmemory+ policy LRU/volatile-lru pour éviter crash. - Persistance hybride : RDB pour backups + AOF pour durabilité (
appendonly yes). - Clés structurées :
user:42:nameau lieu denamepour éviter collisions. - Monitoring :
INFO+ Prometheus exporter ; scalez avec sentinels/cluster.
Erreurs courantes à éviter
- Oubli du mot de passe : CLI échoue sans
-a pass; clients timeout. KEYS *en prod : Bloque le serveur (millions de clés) ; utilisez SCAN.- Pas de maxmemory : Consomme toute RAM, OOM killer tue le process.
- Persistance ignorée : RDB/AOF désactivés = données perdues au restart.
Pour aller plus loin
- Docs officielles : valkey.io
- Cluster : Tutoriel avancé sur sharding.
- Alternatives : Dragonfly (compatible, plus rapide).