Skip to content
Learni
Voir tous les tutoriels
Bases de données

Comment installer, configurer et utiliser Valkey en 2026

Read in English

Introduction

Valkey est un fork communautaire de Redis, lancé en 2024 par des anciens contributeurs pour préserver l'open-source pur face aux changements de licence de Redis Inc. Ce magasin clé-valeur en mémoire excelle en cache, sessions utilisateur, files d'attente et bases de données temps réel, avec des performances ultra-rapides (millions d'op/s). Pourquoi l'adopter en 2026 ? Il est 100% compatible Redis, gratuit, scalable via clustering, et supporte la persistance (RDB snapshots, AOF logs). Contrairement à Redis Cloud payant, Valkey s'intègre facilement en prod. Ce tutoriel intermédiaire vous emmène de l'installation à une app Node.js complète, en couvrant config, persistance et monitoring. À la fin, vous maîtriserez un setup production-ready, comme un mentor le ferait pour un dev senior. (128 mots)

Prérequis

  • Système Linux (Ubuntu 22.04+) ou macOS avec Homebrew
  • Git et build essentials : sudo apt install build-essential
  • Node.js 20+ et npm pour les exemples clients
  • Docker (optionnel pour conteneurs)
  • Connaissances de base en Redis (clés, hashes, listes)

Installation de Valkey depuis les sources

install-valkey.sh
#!/bin/bash

# Ajout du repo officiel Valkey (Ubuntu/Debian)
curl -fsSL https://packages.valkey.io/public.key | sudo gpg --dearmor -o /usr/share/keyrings/valkey-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/valkey-archive-keyring.gpg] https://packages.valkey.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/valkey.list > /dev/null

sudo apt update
sudo apt install valkey-tools valkey-server -y

# Vérification
valkey-server --version
valkey-cli --version

Ce script ajoute le repo officiel Valkey, installe le serveur et les outils CLI. Sur macOS, utilisez brew install valkey. Évitez les snaps pour un contrôle total des configs ; testez toujours la version avec --version pour confirmer l'install.

Première utilisation en CLI

Démarrez Valkey avec sudo systemctl start valkey-server (ou brew services start valkey sur macOS). Connectez-vous via valkey-cli. Testez les bases : SET user:1 "Alice", GET user:1 retourne "Alice". Utilisez FLUSHALL pour vider. Analogie : Valkey est comme un tableau noir géant en RAM – ultra-rapide mais volatile sans persistance. PING répond PONG en <1ms.

Configuration de base personnalisée

valkey.conf
# Valkey configuration production-ready

# Bind à localhost seulement pour sécurité
bind 127.0.0.1

# Port par défaut
port 6379

# Timeout client
timeout 0

tcp-keepalive 300

# Logs détaillés
loglevel notice
logfile "/var/log/valkey/valkey-server.log"

# Persistance RDB (snapshots)
save 900 1
save 300 10
save 60 10000

dbfilename dump.rdb
dir /var/lib/valkey/

# AOF activé pour durabilité
appendonly yes
appendfsync everysec

# Max mémoire 1GB, evict LRU
maxmemory 1gb
maxmemory-policy allkeys-lru

# Auth basique (changez le mot de passe !)
requirepass MonSuperMotDePasse123

Ce fichier /etc/valkey/valkey.conf (copiez et adaptez) active persistance RDB (snapshots auto) et AOF (logs append), limite RAM à 1GB avec eviction LRU. requirepass sécurise l'accès. Redémarrez avec sudo systemctl restart valkey-server ; piège : oubliez dir et les dumps échouent.

Activation et test de la persistance

Après config, redémarrez et testez : valkey-cli -a MonSuperMotDePasse123. Insérez 1000 clés (for i in {1..1000}; do SET key$i $i; done), kill (-9) le process, relancez : valkey-cli INFO persistence montre RDB/AOF actifs. RDB = snapshots compacts (idéal backup) ; AOF = logs incrémentaux (durabilité max, mais + gros).

Script de test persistance

test-persistence.sh
#!/bin/bash

PASSWORD="MonSuperMotDePasse123"
VALKEY_CLI="valkey-cli -a $PASSWORD"

# Insertion de données
$VALKEY_CLI FLUSHALL
for i in {1..500}; do
  $VALKEY_CLI SET test:key$i "valeur $i"
done

# Snapshot manuel
$VALKEY_CLI BGSAVE

# Vérif mémoire et persistance
$VALKEY_CLI INFO persistence
$VALKEY_CLI INFO memory

# Kill et restart
sudo pkill valkey-server
sudo systemctl start valkey-server
sleep 2

# Vérif récupération
RECOVERED=$($VALKEY_CLI EXISTS test:key1)
echo "Clé récupérée : $RECOVERED (1=oui)"

$VALKEY_CLI KEYS "test:key*" | wc -l

Ce script teste RDB/AOF : insère, snapshot, kill brutal, relance, vérifie récupération. BGSAVE force snapshot asynchrone. Piège : sans appendonly yes, AOF ignore ; ajustez maxmemory pour éviter OOM en prod.

Intégration avec une app Node.js

Pour l'usage réel, utilisez un client comme @valkey/js (officiel). Installez npm i @valkey/js. Analogie : CLI = console dev ; client = prod scalable. Gérez connexions pool, retries, et pub/sub pour temps réel.

Client Node.js TypeScript complet

valkey-app.ts
import { createClient } from 'redis';

async function main() {
  const client = createClient({
    url: 'redis://localhost:6379',
    password: 'MonSuperMotDePasse123',
  });

  client.on('error', (err) => console.error('Erreur Valkey:', err));

  await client.connect();

  // SET/GET basique
  await client.set('user:42', JSON.stringify({ name: 'Bob', age: 30 }));
  const user = await client.get('user:42');
  console.log('User:', JSON.parse(user!));

  // Hash pour objets complexes
  await client.hSet('session:abc123', {
    csrf: 'token123',
    expires: Date.now() + 3600000,
  });
  const session = await client.hGetAll('session:abc123');
  console.log('Session:', session);

  // Liste pour file d'attente
  await client.lPush('jobs', 'job1', 'job2');
  const job = await client.lPop('jobs');
  console.log('Job pop:', job);

  // TTL exemple
  await client.set('temp:cache', 'data', { EX: 60 });

  await client.quit();
}

main().catch(console.error);

Ce script TS autonome utilise @valkey/js (npm-compatible Redis). Gère hashes (sessions), listes (queues), TTL (cache). Ajoutez ts-node pour run ; piège : oubliez connect() ou error handler, crash en prod. Scalez avec poolSize: 10.

Monitoring avec Valkey CLI avancé

monitor-valkey.sh
#!/bin/bash

PASSWORD="MonSuperMotDePasse123"

# Stats en temps réel
valkey-cli -a $PASSWORD --stat

# INFO détaillé
valkey-cli -a $PASSWORD INFO all | grep -E '(used_memory|connected_clients|keyspace_hits)'

# Slowlog top 10 queries lentes
valkey-cli -a $PASSWORD SLOWLOG get 10

# Pub/Sub test
valkey-cli -a $PASSWORD --cluster create 127.0.0.1:6379 &

# Cleanup
valkey-cli -a $PASSWORD FLUSHDB

Ce script affiche métriques live (--stat), slow queries, et prépare cluster. Utilisez INFO keyspace_hits pour hit-rate cache (>90% idéal). Piège : sans monitoring, fuites mémoire passent inaperçues ; cron ce script toutes les 5min.

Bonnes pratiques

  • Sécurité : Toujours requirepass + bind 127.0.0.1 ; TLS en prod via tls-port.
  • Mémoire : maxmemory-policy allkeys-lfu pour cache hot data ; monitor used_memory.
  • Persistance : AOF everysec + RDB hebdo ; backup offsite.
  • Scaling : Cluster mode pour >1GB ; Sentinel pour HA.
  • Clients : Connexions pool (5-20), retries exponentiels.

Erreurs courantes à éviter

  • Oublier auth : NOAUTH Authentication required → toujours -a en CLI.
  • Pas de maxmemory : OOM killer tue le process en prod.
  • Persistance off : Données perdues après reboot → vérifiez INFO persistence.
  • Clés non-TTL : Mémoire gonflée → EXPIRE systématique sur caches.

Pour aller plus loin

  • Docs officielles : valkey.io
  • Cluster setup : valkey-cli --cluster create
  • Alternatives : Dragonfly pour compat Redis.
  • Formations Learni Dev sur bases NoSQL avancées et scaling.
Estimez 2000 mots lus en 18 min.