Redis central
Version anglaise : en/redis.md.
Rôle (règle 6.2 du kit)
Redis sert de cache et de coordination temporaire : compteurs de limitation de débit, cache chiffrable par locataire (eai.cache), verrous distribués avec jeton de fencing. Il n'est jamais la seule source de vérité des permissions, suspensions, quotas ou preuves : ces données sont lues dans PostgreSQL. Le test tests/test_core_redis.py::test_sources_of_truth_never_read_from_redis refuse tout import de Redis ou de eai.cache dans ces modules.
Connexion, TLS et ACL
EAI_REDIS_URL=rediss://redis.interne:6390/0,EAI_REDIS_USERNAME=eai,EAI_REDIS_PASSWORD_FILE=/run/secrets/redis-password,EAI_REDIS_TLS_CA_FILE=/etc/eai/redis-ca.pem(certificat serveur vérifié). En prod, le démarrage refuseredis://et une URL sans mot de passe (fichier).- Utilisateur ACL minimal :
ACL SETUSER eai on >… ~eai:* +@all -@dangerous(clés préfixéeseai:). - Clés :
eai:c:<locataire>:<espace>:<nom>(cache, TTL obligatoire de 1 s à 7 jours),eai:rl:*(débit, fenêtre d'une minute). /readyzpublieredis: {configured, ok, role, error}sans rendre l'instance non prête.
Haute disponibilité
deploy/data/redis(opérateur OT redis-operator) : réplication avec sentinelles et TLS. Après une bascule, le client se reconnecte à la nouvelle primaire ; vérifié avec un vrairedis-server: réplique--replicaof, arrêt de la primaire (le cache répond « absent » sans erreur), promotionREPLICAOF NO ONE, lecture et écriture sur la nouvelle primaire.
Redis indisponible
- Cache : lecture = absent, écriture =
False, verrou refusé. Limitation de débit : bascule sur les compteurs en mémoire de chaque réplica (journal d'avertissement). L'API continue de servir.
Sauvegarde
- Aucune : le contenu se reconstruit. Persistance désactivable.
Tests
cd services/control-plane && .venv/bin/python -m pytest -q tests/test_core_redis.py (démarre /usr/bin/redis-server sur des ports libres) : TTL, isolation des locataires, entrée chiffrée liée à sa clé, verrou et fencing, débit partagé entre deux instances, réplication et bascule, ACL avec fichier de mot de passe, Redis arrêté.