3.1 KiB
3.1 KiB
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 expiryget_json: Retrieve JSON data with pattern matchingget_json_iterator: Memory-efficient iterator for large datasetsdelete: Remove keys matching a patternrefresh_ttl: Update expiry time for existing keyskey_exists: Check if a key exists without retrieving itresolve_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