production-evyos-systems-an.../ServicesApi/Controllers/Redis/README.md

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 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