prod-wag-backend-automate-s.../Controllers/Redis
berkay e5f88f2eb4 black shift 2025-04-22 11:10:29 +03:00
..
Broadcast black shift 2025-04-22 11:10:29 +03:00
README.md updated redis impl 2025-04-20 14:58:55 +03:00
base.py auth endpoints added 2025-04-03 14:19:34 +03:00
config.py updated redis impl 2025-04-20 14:58:55 +03:00
connection.py black shift 2025-04-22 11:10:29 +03:00
database.py updated Postgres Service 2025-04-01 17:30:40 +03:00
implementations.py black shift 2025-04-22 11:10:29 +03:00
response.py auth endpoints added 2025-04-03 14:19:34 +03:00

README.md

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