Redis Sidecar Dokumentation für ExFlow OnPrem Cache
Überblick
Der Redis Sidecar in ExFlow OnPrem Cache implementiert eine verteilte Caching-Schicht mit intelligenten Fallback-Funktionen. Er dient als Leistungsoptimierung und Ausfallsicherheitsmechanismus für Dateioperationen und arbeitet unabhängig neben dem Hauptanwendungscontainer.
Architekturmuster
Hauptfunktionen
1. Dateimetadaten-Caching
Redis fungiert als hochperformante Cache-Schicht für Dateioperationen und speichert häufig aufgerufene Metadaten, um Dateisystem-I/O zu reduzieren.
Was wird gecacht:
- Dateimetadaten: Größe, Inhaltstyp, ETag, letzte Änderungsdaten
- Container-Informationen: Verzeichnisstruktur und Dateilisten
- Gesundheitsstatus: Verbindungsdiagnosen und Leistungsmetriken
- Cache-Schlüssel-Format:
filerepo:{container}:{filename}(konfigurierbares Präfix)
2. Intelligentes Fallback-System
Ihre Implementierung umfasst ausgeklügelte Fallback-Logik:
Fallback-Hierarchie:
- Primär: Redis verteilter Cache
- Sekundär: In-Memory-Cache (lokaler Prozess)
- Tertiär: Direkter Dateisystemzugriff (kein Caching)
Konfiguration
Basierend auf Ihrer appsettings.json, hier sind die wichtigsten Redis Sidecar Einstellungen:
Umgebungsvariablen-Überschreibungen:
REDIS_DISABLED=true- Erzwingt In-Memory-CacheREDIS_CONNECTION=host:port- Überschreibt Connection StringREDIS_CONNECT_TIMEOUT_MS=5000- Passt Timeout anREDIS_RETRY=3- Modifiziert Wiederholungsversuche
Leistungsvorteile
Cache-Aside Pattern Implementierung
Ihr FileRepositoryService implementiert wahrscheinlich das Cache-Aside Pattern:
-
Leseoperationen:
- Zuerst Redis Cache prüfen
- Bei Fehlschlag, vom Dateisystem lesen
- Ergebnis in Redis für zukünftige Anfragen speichern
-
Schreiboperationen:
- Ins Dateisystem schreiben
- Redis Cache aktualisieren/invalidieren
- Cache-Konsistenz sicherstellen
Erwartete Leistungsverbesserungen:
- Metadaten-Abfragen: 10-100x schneller (Redis vs Dateisystem)
- Dateilisten: Erhebliche Verbesserung bei großen Verzeichnissen
- Reduzierte I/O: Weniger Dateisystemoperationen unter Last
- Skalierbarkeit: Mehrere App-Instanzen teilen Cache-Status
Betriebsfunktionen
Gesundheitsüberwachung
Ihre Implementierung umfasst umfassende Redis-Gesundheitsüberwachung:
Verfügbare Diagnosen:
/api/redis/status- Echtzeit Redis-Verbindungsstatus/api/health/ready- Gesamtsystem-Bereitschaft einschließlich Redis- Verbindungsausfall-/Wiederherstellungs-Zeitstempel
- Fehlerverfolgung und Korrelations-IDs
Cache-Invalidierungsstrategie
Basierend auf Ihren Dateioperationen:
- Datei-Upload: Cache bei erfolgreichem Schreibvorgang invalidiert
- Datei-Löschung: Cache-Eintrag sofort entfernt
- Metadaten-Update: Cache mit neuen Werten aktualisiert
- TTL-Ablauf: Automatische Bereinigung veralteter Einträge
Leistungsprobleme:
- Cache-Hit-Verhältnisse über Redis-Logs überwachen
- Netzwerklatenz zwischen App und Redis prüfen
- Redis-Speicherverbrauch und Verdrängungsrichtlinien überprüfen
Fallback-Verhalten:
- Anwendung arbeitet mit In-Memory-Cache weiter
- Leistung verschlechtert sich, aber Funktionalität bleibt erhalten
- Logs auf Fallback-Aktivierung überwachen
Sicherheitsüberlegungen
Netzwerksicherheit
- Redis läuft typischerweise nur im internen Netzwerk
- Keine Authentifizierung im Sidecar-Pattern erforderlich
- Redis AUTH für Produktionsumgebungen in Betracht ziehen
Datensensitivität
- Nur Metadaten gecacht (nicht Dateiinhalte)
- Cache-Schlüssel enthalten keine sensiblen Informationen
- Automatischer Ablauf verhindert Preisgabe veralteter Daten
Überwachung & Observability
Wichtige zu verfolgende Metriken
- Redis-Verbindungs-Uptime/Downtime
- Cache-Hit/Miss-Verhältnisse
- Speicherverbrauch in Redis
- Netzwerklatenz zu Redis
- Fallback-Aktivierungshäufigkeit
Log-Analyse
Ihre Anwendung bietet umfangreiche Protokollierung für Redis-Operationen:
- Verbindungsaufbau/-fehler
- Cache-Operationen und Leistung
- Fallback-Aktivierungsereignisse
- Gesundheitsprüfungsergebnisse
Best Practices
- Verbindungsmanagement: Verbindungspooling verwenden (von StackExchange.Redis verwaltet)
- Fehlerbehandlung: Circuit Breaker Patterns für Redis-Fehler implementieren
- Überwachung: Alarme für Redis-Downtime und Fallback-Aktivierung einrichten
- Kapazitätsplanung: Redis-Speicherverbrauch überwachen und Wachstum planen
- Backup-Strategie: Redis-Persistierung für Cache-Haltbarkeit konfiguriert
Externe Ressourcen
Hier sind einige Ressourcen, die das Redis Sidecar Konzept erklären:
- Microsoft Azure: Azure Cache for Redis - Sidecar Pattern
- Kubernetes Dokumentation: Sidecar Container
- Redis Dokumentation: Redis als Cache
- Martin Fowler: Cache-Aside Pattern
Diese Redis Sidecar Implementierung bietet eine robuste, produktionstaugliche Caching-Lösung, die die Leistung verbessert und gleichzeitig die Systemzuverlässigkeit durch intelligente Fallback-Mechanismen aufrechterhält.