Migration du stockage des sessions : Redis → Postgres
Généré par Claude Code · 2026-09-28 · En attente de relecture
Contexte
Les données de session résident dans une seule instance Redis, sans persistance. La semaine dernière, deux redémarrages ont chacun fait perdre environ 40 000 connexions. Ce plan déplace les sessions vers le cluster Postgres existant et conserve Redis comme cache de lecture.
Options
| Option | Durabilité | P95 en lecture | Charge |
|---|---|---|---|
| A : activer Redis AOF | Par seconde | 0,8 ms | Faible |
| B : passer à Postgres | Par transaction | 2,4 ms | Moyenne |
| C : B + cache de lecture Redis | Par transaction | 0,9 ms | Moyenne |
Option recommandée : C. Même durabilité que B, avec une latence de lecture proche de l’actuelle.
Étapes
- Créer la table
sessionsavec un index suruser_id - Double écriture : les nouvelles sessions sont écrites à la fois dans Redis et dans Postgres
- Reprendre les sessions existantes (environ 1,2 million de lignes)
- Basculer les lectures sur Postgres ; Redis devient un cache
- Surveiller 7 jours, puis supprimer la dépendance à la persistance Redis
Flux de données
Script de reprise
-- Ne reprendre que les sessions non expirées
INSERT INTO sessions (id, user_id, data, expires_at)
SELECT id, user_id, data, expires_at
FROM staging_sessions
WHERE expires_at > now()
ON CONFLICT (id) DO NOTHING;
Risques
Avertissement
Si des doubles écritures entrent en conflit pendant la reprise, Postgres l’emporte. Gelez les modifications du schéma des sessions avant de lancer la reprise.
Retour arrière
Les lectures sont pilotées par l’indicateur SESSION_READ_FROM_PG. Désactivez-le pour revenir à Redis. Aucun redéploiement nécessaire.