diff --git a/app/config/settings.py b/app/config/settings.py index ef87a96..90a4150 100644 --- a/app/config/settings.py +++ b/app/config/settings.py @@ -49,6 +49,12 @@ class Settings(BaseSettings): # Security secret_key: str = Field(..., env="SECRET_KEY") access_token_expire_minutes: int = Field(30, env="ACCESS_TOKEN_EXPIRE_MINUTES") + + # Redis + redis_host: str = Field("localhost", env="REDIS_HOST") + redis_port: int = Field(6379, env="REDIS_PORT") + redis_db: int = Field(0, env="REDIS_DB") + redis_password: str | None = Field(None, env="REDIS_PASSWORD") @field_validator("cors_origins", mode="before") @classmethod diff --git a/app/services/cache.py b/app/services/cache.py new file mode 100644 index 0000000..83228c2 --- /dev/null +++ b/app/services/cache.py @@ -0,0 +1,25 @@ +# app/services/cache.py +import redis +from app.config.settings import settings + + +redis_client = None + +def init_cache(): + global redis_client + redis_client = redis.Redis( + host=settings.redis_host, + port=settings.redis_port, + db=settings.redis_db, + password=settings.redis_password, + decode_responses=True + ) + +def set_cache(key, value, expire_seconds=3600): + redis_client.set(key, value, ex=expire_seconds) + +def get_cache(key): + return redis_client.get(key) + +def delete_cache(key): + redis_client.delete(key) diff --git a/main.py b/main.py index fba1d9f..3e56552 100644 --- a/main.py +++ b/main.py @@ -12,6 +12,7 @@ from app.config.logger import Logger from app.config.settings import settings from app.api.v1.agents_router import router as agents_router +from app.services.cache import init_cache # Setup logging Logger.setup_root_logger() @@ -28,6 +29,11 @@ async def lifespan(app: FastAPI): logger.info(f"Environment: {settings.environment}") logger.info(f"Model: {settings.google_model_name}") logger.info(f"Venue: {settings.conference_venue_name}") + + # Initialize Redis + logger.info("Connecting to Redis...") + init_cache() + logger.info("Redis connected.") yield