# Redis Controller ## Overview This module provides a robust, thread-safe Redis connection handler with comprehensive concurrent operation testing. The Redis controller is designed for high-performance, resilient database connection management that can handle multiple simultaneous operations efficiently. ## Features - Singleton pattern for efficient connection management - Connection pooling with configurable settings - Automatic retry capabilities for Redis operations - Thread-safe operations with proper error handling - Comprehensive JSON data handling - TTL management and expiry time resolution - Efficient batch operations using Redis pipelines ## Configuration The Redis controller is configured with the following default settings: - Host: 10.10.2.15 - Port: 6379 - DB: 0 - Connection pool size: 50 connections - Health check interval: 30 seconds - Socket timeout: 5.0 seconds - Retry on timeout: Enabled - Socket keepalive: Enabled ## Usage Examples The controller provides several high-level methods for Redis operations: - `set_json`: Store JSON data with optional expiry - `get_json`: Retrieve JSON data with pattern matching - `get_json_iterator`: Memory-efficient iterator for large datasets - `delete`: Remove keys matching a pattern - `refresh_ttl`: Update expiry time for existing keys - `key_exists`: Check if a key exists without retrieving it - `resolve_expires_at`: Get human-readable expiry time ## Concurrent Performance Testing The Redis controller has been thoroughly tested for concurrent operations with impressive results: ### Test Configuration - 10,000 concurrent threads - Each thread performs a set, get, and delete operation - Pipeline used for efficient batching - Exponential backoff for connection errors - Comprehensive error tracking and reporting ### Test Results ``` Concurrent Redis Test Results: Total threads: 10000 Passed: 10000 Failed: 0 Operations with retries: 0 Total retry attempts: 0 Success rate: 100.00% Performance Metrics: Total execution time: 4.30 seconds Operations per second: 2324.35 Average operation time: 1.92 ms Minimum operation time: 0.43 ms Maximum operation time: 40.45 ms 95th percentile operation time: 4.14 ms ``` ## Thread Safety The Redis controller is designed to be thread-safe with the following mechanisms: - Connection pooling to manage concurrent connections efficiently - Thread-local storage for operation-specific data - Atomic operations using Redis pipelines - Proper error handling and retry logic for connection issues - Exponential backoff for handling connection limits ## Error Handling The controller implements comprehensive error handling: - Connection errors are automatically retried with exponential backoff - Detailed error reporting with context-specific information - Graceful degradation under high load - Connection health monitoring and automatic reconnection ## Best Practices - Use pipelines for batching multiple operations - Implement proper key naming conventions - Set appropriate TTL values for cached data - Monitor connection pool usage in production - Use the JSON iterator for large datasets to minimize memory usage