Skip to main content

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:

  1. Primär: Redis verteilter Cache
  2. Sekundär: In-Memory-Cache (lokaler Prozess)
  3. 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-Cache
  • REDIS_CONNECTION=host:port - Überschreibt Connection String
  • REDIS_CONNECT_TIMEOUT_MS=5000 - Passt Timeout an
  • REDIS_RETRY=3 - Modifiziert Wiederholungsversuche

Leistungsvorteile

Cache-Aside Pattern Implementierung

Ihr FileRepositoryService implementiert wahrscheinlich das Cache-Aside Pattern:

  1. Leseoperationen:

    • Zuerst Redis Cache prüfen
    • Bei Fehlschlag, vom Dateisystem lesen
    • Ergebnis in Redis für zukünftige Anfragen speichern
  2. 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

  1. Verbindungsmanagement: Verbindungspooling verwenden (von StackExchange.Redis verwaltet)
  2. Fehlerbehandlung: Circuit Breaker Patterns für Redis-Fehler implementieren
  3. Überwachung: Alarme für Redis-Downtime und Fallback-Aktivierung einrichten
  4. Kapazitätsplanung: Redis-Speicherverbrauch überwachen und Wachstum planen
  5. Backup-Strategie: Redis-Persistierung für Cache-Haltbarkeit konfiguriert

Externe Ressourcen

Hier sind einige Ressourcen, die das Redis Sidecar Konzept erklären:


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.