graph LR
Core_Memcached_Client["Core Memcached Client"]
Pooled_Memcached_Client["Pooled Memcached Client"]
Hashed_Memcached_Client["Hashed Memcached Client"]
Serialization_Deserialization_Module["Serialization/Deserialization Module"]
Exception_Handling_Module["Exception Handling Module"]
Rendezvous_Hashing_Algorithm["Rendezvous Hashing Algorithm"]
Object_Pool["Object Pool"]
Pooled_Memcached_Client -- "inherits from" --> Core_Memcached_Client
Pooled_Memcached_Client -- "composes" --> Object_Pool
Hashed_Memcached_Client -- "inherits from" --> Core_Memcached_Client
Hashed_Memcached_Client -- "uses" --> Rendezvous_Hashing_Algorithm
Core_Memcached_Client -- "uses" --> Serialization_Deserialization_Module
Core_Memcached_Client -- "raises" --> Exception_Handling_Module
Pooled_Memcached_Client -- "uses" --> Serialization_Deserialization_Module
Hashed_Memcached_Client -- "uses" --> Serialization_Deserialization_Module
click Core_Memcached_Client href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/pymemcache/Core_Memcached_Client.md" "Details"
The pymemcache library is structured around a clear layered architecture, with a foundational Client component handling low-level interactions, and higher-level clients building upon it for advanced features like connection pooling and multi-server management. Serialization and exception handling are modularized, promoting separation of concerns.
Core Memcached Client [Expand]
This is the fundamental interface for interacting with a single Memcached server. It manages the TCP/UNIX socket connection, sends Memcached commands (e.g., set, get, delete), parses responses, and integrates with the serialization/deserialization mechanism. It handles the low-level protocol details and serves as the base for all other client implementations.
Related Classes/Methods:
Extends the Core Memcached Client to provide connection pooling. Instead of opening and closing a connection for each operation, it reuses existing connections from a pool, improving performance and reducing overhead, especially in high-concurrency environments.
Related Classes/Methods:
pymemcache.client.pooled.PooledClient
Extends the Core Memcached Client to manage interactions with multiple Memcached servers. It uses a hashing algorithm (like Rendezvous Hashing) to determine which server a particular key should be stored on or retrieved from, enabling distributed caching.
Related Classes/Methods:
This module provides the mechanisms for converting Python objects into bytes suitable for storage in Memcached and vice-versa. It defines default serializers (e.g., LegacyWrappingSerde, PickleSerde) and allows for custom serialization logic.
Related Classes/Methods:
Defines custom exception classes specific to Memcached operations (e.g., MemcacheError, MemcacheClientError, MemcacheServerError). These exceptions provide more granular error reporting than generic network or I/O errors, helping developers diagnose issues related to Memcached interactions.
Related Classes/Methods:
Implements the Rendezvous Hashing (HRW) algorithm, which is used by the HashClient to consistently map keys to servers in a distributed Memcached setup. This algorithm minimizes key remapping when servers are added or removed, improving cache hit rates.
Related Classes/Methods:
A generic object pooling utility used by the PooledClient to manage and reuse Client instances (connections). It handles the creation, borrowing, and returning of objects to the pool, and can manage idle timeouts.
Related Classes/Methods: