dynamic-config-qq 1.3.0
基于Redis Cluster的动态配置管理系统，采用主动拉取(Pull)+推送(Push)双模式更新策略，内置LRU本地缓存。
Requires Python: >=2.7
Keywords: redis, gevent, dynamic_config_qq, pubsub, cluster

# Dynamic Config
        
        基于Redis Cluster的动态配置管理系统，采用主动拉取(Pull)+推送(Push)双模式更新策略，内置LRU本地缓存。
        
        ## 核心特性
        - **双模式更新**：主动拉取(过期/缓存未命中) + 推送订阅(实时变更)
        - **高效缓存**：LRU本地缓存，支持容量和过期时间配置
        - **集群支持**：原生支持Redis Cluster分布式部署
        - **高可用**：订阅模式自动重连机制
        
        ## 架构设计
        
        ## Installation
        ```bash
        pip install dynamic-config
        ```
        
        ## 快速开始
        ### 客户端
        
        ```python
        from dynamic_config_qq import DynamicConfigClient
        
        # 初始化客户端
        client = DynamicConfigClient(
           cluster_nodes=[{'host': 'redis', 'port': 6301, 'name': 'paas.dc.node1.dzqd.cn:6301'}, ],
           password='pwd',
           cache_capacity=1000,  # LRU缓存容量
           cache_expire=300,  # 缓存过期时间(秒)
           enable_subscription=True  # 启用订阅接受推送
        )
        
        # 读写配置
        client.set("timeout", 30)  # 写入配置
        timeout = client.get("timeout")  # 读取配置
        ```
        
        ### 管理接口
        
        ```python
        from dynamic_config_qq import DynamicConfigManager
        
        config_manager = DynamicConfigManager(
           cluster_nodes=[{'host': 'redis', 'port': 6301, 'name': 'paas.dc.node1.dzqd.cn:6301'}],
           password='pwd',
           socket_timeout=10,
           socket_connect_timeout=30,
        )
        
        config_manager.create_config("test_key3", "test_value")
        config_manager.update_config("test_key3", "updated_value")
        config_manager.delete_config("test_key3")
        
        ```
        
        
        ## 配置
        
        ### Client配置参数
        | 参数名 | 类型 | 默认值 | 说明                                                                                              |
        |--------|------|--------|-------------------------------------------------------------------------------------------------|
        | `cluster_nodes` | List[str] | 必填 | Redis Cluster节点列表 (如 `=[{'host': 'redis', 'port': 6301, 'name': 'paas.dc.node1.dzqd.cn:6301'}]`) |
        | `password` | str | None | Redis访问密码                                                                                       |
        | `cache_capacity` | int | 1000 | LRU缓存最大容量，0表示不启用本地缓存                                                                            |
        | `cache_expire` | int | 300 | 缓存过期时间(秒)                                                                                       |
        | `socket_timeout` | int | 10 | Redis操作超时时间(秒)                                                                                  |
        | `socket_connect_timeout` | int | 30 | Redis连接超时时间(秒)                                                                                  |
        | `enable_subscription` | bool | False | 启用订阅，接收push消息                                                                                   |
        | `subscription_reconnection_interval` | int | 5 | 订阅断开后重连间隔(秒)                                                                                    |
        | `channel` | str | "global" | 配置变更通知频道前缀                                                                                      |
        
        ### 使用建议
        1. 高频读、低频写：
           1. 增大cache_expire减少Redis访问；
           2. 关闭订阅或增加订阅断开重连时间间隔，避免长链接占用或频繁建立连接。
        2. 低频读、对配置更新时效敏感：关闭cache，每次读取都从Redis获取。
        3. 配置立即生效：重启服务（不建议使用接受push消息的订阅模式，仅在服务不支持重启更新配置的情况下使用）。