@@ -401,7 +401,7 @@ def __init__(
401
401
Recommended values:
402
402
- Production systems: True (recommended for all connections)
403
403
- Connection pools: True (essential - affects all pool connections)
404
- - Development/testing: False or None (for simplicity)
404
+ - Development/testing: False or None (for simplicity and catching network issues early )
405
405
Trade-offs:
406
406
- True: Detects dead connections but uses more network resources (only during idle periods)
407
407
- False: Lower network overhead but may not detect connection failures
@@ -461,6 +461,118 @@ def __init__(
461
461
- More frequent keepalive packets increase network usage
462
462
- Faster dead connection detection improves reliability
463
463
464
+ connection_pool (Optional[ConnectionPool], default=None):
465
+ Main description: Pre-configured connection pool instance.
466
+ Recommended values:
467
+ - None: Auto-create pool with provided parameters
468
+ - Custom pool: For advanced configuration or sharing
469
+ Trade-offs:
470
+ - Auto-created: Simple but less control
471
+ - Custom pool: Full control but more complex setup
472
+ Related parameters: max_connections, single_connection_client
473
+ Performance implications:
474
+ - Connection reuse reduces establishment overhead
475
+ - Pool size affects concurrency and memory usage
476
+ - Proper sizing is critical for performance
477
+
478
+ unix_socket_path (Optional[str], default=None):
479
+ Main description: Path to Unix domain socket for local Redis connections.
480
+ Recommended values:
481
+ - Local Redis: "/var/run/redis/redis.sock"
482
+ - Docker: "/tmp/redis.sock" (with volume mount)
483
+ - None: Use TCP connection instead
484
+ Trade-offs:
485
+ - Unix socket: Lower latency, higher throughput for local connections
486
+ - TCP socket: Works across network but higher overhead
487
+ Related parameters: host, port (mutually exclusive with unix socket)
488
+ Use cases:
489
+ - Same-machine deployment: Optimal performance
490
+ - Container sidecar: Redis in same pod/container
491
+ - High-performance applications: Minimize network stack overhead
492
+ Common issues:
493
+ - File permissions: Socket file must be accessible
494
+ - Path doesn't exist: Redis must create socket at specified path
495
+ - Container volumes: Socket path must be mounted correctly
496
+ Performance implications:
497
+ - Better performance than TCP for local connections
498
+ - Lower CPU usage (no network stack processing)
499
+ - Not available for remote connections
500
+
501
+ encoding (str, default="utf-8"):
502
+ Main description: Character encoding for string values when encode/decode operations occur.
503
+ Recommended values:
504
+ - UTF-8: "utf-8" (recommended for most applications, universal Unicode support)
505
+ - ASCII: "ascii" (for ASCII-only data, fails on non-ASCII characters)
506
+ - Latin-1: "latin-1" (for binary data compatibility, maps bytes 0-255 directly)
507
+ Accepted values: Any encoding supported by Python's codecs module (120+ encodings)
508
+ - Common: utf-8, ascii, latin-1, iso-8859-1, cp1252, utf-16, utf-32
509
+ - Asian: big5, gb2312, gbk, shift_jis, euc_jp, euc_kr
510
+ - Cyrillic: koi8_r, koi8_u, cp1251
511
+ - See: https://docs.python.org/3/library/codecs.html#standard-encodings
512
+ Trade-offs:
513
+ - UTF-8: Universal Unicode support, backward compatible with ASCII
514
+ - ASCII: Strict 7-bit encoding, fails on characters > 127
515
+ - Latin-1: Handles any byte value, but not true Unicode beyond Latin characters
516
+ Related parameters: encoding_errors, decode_responses
517
+ Use cases:
518
+ - International apps: UTF-8 for full Unicode support
519
+ - Legacy systems: ASCII or Latin-1 for compatibility
520
+ - Binary data: Latin-1 to avoid encoding errors
521
+ Common issues:
522
+ - Encoding mismatches: Client and server using different encodings
523
+ - Binary data corruption: UTF-8 encoding binary values
524
+ - UnicodeEncodeError: ASCII/Latin-1 with non-compatible characters
525
+
526
+ encoding_errors (str, default="strict"):
527
+ Main description: How to handle encoding/decoding errors when they occur.
528
+ Recommended values:
529
+ - "strict": Raise exception on encoding errors (recommended for data integrity)
530
+ - "ignore": Skip invalid characters (data loss risk)
531
+ - "replace": Replace invalid chars with ? (encoding) or � (decoding)
532
+ Additional options:
533
+ - "backslashreplace": Use backslash escape sequences (\\ uXXXX)
534
+ - "xmlcharrefreplace": Use XML character references (&#NNNN;) - encoding only
535
+ - "namereplace": Use Unicode names (\\ N{...}) - encoding only
536
+ Accepted values: Any error handler supported by Python's codecs module
537
+ - See: https://docs.python.org/3/library/codecs.html#error-handlers
538
+ Trade-offs:
539
+ - strict: Data integrity guaranteed but may cause failures
540
+ - ignore: Continues processing but silently loses data
541
+ - replace: Preserves processing flow but corrupts data
542
+ - backslashreplace: Preserves information but changes data format
543
+ Related parameters: encoding, decode_responses
544
+ Use cases:
545
+ - Production: "strict" to catch encoding issues early
546
+ - Data migration: "ignore" or "replace" for dirty data
547
+ - Debugging: "strict" to identify encoding problems
548
+ - Logging: "backslashreplace" to preserve problematic characters
549
+ Common issues:
550
+ - Silent data corruption: Using "ignore" or "replace"
551
+ - Application crashes: "strict" with invalid data
552
+ - Inconsistent behavior: Different error handling across environments
553
+
554
+ decode_responses (bool, default=False):
555
+ Main description: Automatically decode byte responses to strings.
556
+ Recommended values:
557
+ - Web applications: True (convenient string handling)
558
+ - High-performance: False (avoid encoding overhead)
559
+ - Mixed data: False (handle encoding per operation)
560
+ Trade-offs:
561
+ - True: Convenient but adds overhead and may corrupt binary data
562
+ - False: More control but requires manual decoding
563
+ Related parameters: encoding, encoding_errors
564
+ Use cases:
565
+ - String-only data: True for convenience
566
+ - Binary data: False to preserve byte integrity
567
+ - Performance-critical: False to minimize overhead
568
+ Common issues:
569
+ - Binary data corruption: Decoding binary values as strings
570
+ - Type confusion: Expecting bytes but getting strings
571
+ - Performance degradation: Unnecessary encoding/decoding
572
+ Performance implications:
573
+ - Affects all read operations
574
+ - Memory usage increases for string objects
575
+
464
576
To specify a retry policy for specific errors, you have two options:
465
577
466
578
1. Set the `retry_on_error` to a list of the error/s to retry on, and
0 commit comments