| from typing import Optional | |
| from pydantic import Field, NonNegativeInt, PositiveFloat, PositiveInt | |
| from pydantic_settings import BaseSettings | |
| class RedisConfig(BaseSettings): | |
| """ | |
| Configuration settings for Redis connection | |
| """ | |
| REDIS_HOST: str = Field( | |
| description="Hostname or IP address of the Redis server", | |
| default="localhost", | |
| ) | |
| REDIS_PORT: PositiveInt = Field( | |
| description="Port number on which the Redis server is listening", | |
| default=6379, | |
| ) | |
| REDIS_USERNAME: Optional[str] = Field( | |
| description="Username for Redis authentication (if required)", | |
| default=None, | |
| ) | |
| REDIS_PASSWORD: Optional[str] = Field( | |
| description="Password for Redis authentication (if required)", | |
| default=None, | |
| ) | |
| REDIS_DB: NonNegativeInt = Field( | |
| description="Redis database number to use (0-15)", | |
| default=0, | |
| ) | |
| REDIS_USE_SSL: bool = Field( | |
| description="Enable SSL/TLS for the Redis connection", | |
| default=False, | |
| ) | |
| REDIS_USE_SENTINEL: Optional[bool] = Field( | |
| description="Enable Redis Sentinel mode for high availability", | |
| default=False, | |
| ) | |
| REDIS_SENTINELS: Optional[str] = Field( | |
| description="Comma-separated list of Redis Sentinel nodes (host:port)", | |
| default=None, | |
| ) | |
| REDIS_SENTINEL_SERVICE_NAME: Optional[str] = Field( | |
| description="Name of the Redis Sentinel service to monitor", | |
| default=None, | |
| ) | |
| REDIS_SENTINEL_USERNAME: Optional[str] = Field( | |
| description="Username for Redis Sentinel authentication (if required)", | |
| default=None, | |
| ) | |
| REDIS_SENTINEL_PASSWORD: Optional[str] = Field( | |
| description="Password for Redis Sentinel authentication (if required)", | |
| default=None, | |
| ) | |
| REDIS_SENTINEL_SOCKET_TIMEOUT: Optional[PositiveFloat] = Field( | |
| description="Socket timeout in seconds for Redis Sentinel connections", | |
| default=0.1, | |
| ) | |