Skip to content

Add Redis caching layer for MinIO operations #2

Description

@Acc0LadE

The current system performs direct MinIO operations for every request, which can lead to:

  • High latency for frequently accessed data
  • Increased MinIO load and potential rate limiting
  • Poor user experience with slow response times
  • Unnecessary network overhead for repeated operations

This issue involves implementing a comprehensive Redis caching layer to optimize performance and reduce MinIO load.

Technical Requirements:

  1. Redis Integration:

    • Deploy Redis as a Kubernetes service
    • Add Redis client configuration to the GUI
    • Implement connection pooling and error handling
    • Add Redis health checks
  2. Caching Strategy:

    • Scan Results: Cache parsed scan results with TTL (default: 24 hours)
    • File Metadata: Cache file information, sizes, and upload timestamps
    • Scan History: Cache scan status and progress information
    • API Responses: Cache frequently requested API endpoint responses
  3. Cache Management:

    • Implement cache invalidation strategies
    • Add cache warming for critical data
    • Implement cache statistics and monitoring
    • Handle cache misses gracefully
  4. Performance Optimization:

    • Implement async caching operations
    • Add cache compression for large objects
    • Implement cache partitioning by scan type
    • Add cache hit/miss ratio monitoring

Architecture Changes:

Current: GUI → MinIO
Proposed: GUI → Redis Cache → MinIO (on cache miss)

Acceptance Criteria:

[ ] Redis deployed as Kubernetes service with proper configuration
[ ] Redis client integrated into GUI with connection pooling
[ ] Scan results cached with configurable TTL
[ ] File metadata cached and updated on changes
[ ] Scan history cached for faster UI updates
[ ] Cache invalidation implemented for data consistency
[ ] Performance monitoring and metrics collection
[ ] Graceful degradation when Redis is unavailable
[ ] Documentation updated with caching configuration
[ ] Helm charts updated with Redis deployment
[ ] Performance benchmarks showing improvement

Files to Create/Modify:

  • gui/redis-deployment.yaml - Redis deployment
  • gui/webapp/main.py - Cache integration
  • gui/webapp/cache_manager.py - Cache management logic
  • gui/values.yaml - Redis configuration
  • gui/webapp/Dockerfile - Redis client dependency
  • documentation/markdown/technical.md - Caching documentation

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions