import redis import hashlib import json import os from dotenv import load_dotenv load_dotenv() REDIS_HOST = os.getenv("REDIS_HOST", "localhost") REDIS_PORT = int(os.getenv("REDIS_PORT", 6379)) CACHE_EXPIRY = 3600 # 1 hour def get_redis_client(): try: client = redis.Redis( host=REDIS_HOST, port=REDIS_PORT, decode_responses=True ) client.ping() return client except: return None def generate_cache_key(complaint_text: str, image_path: str) -> str: content = f"{complaint_text}_{image_path}" return hashlib.md5(content.encode()).hexdigest() def get_cached_response(complaint_text: str, image_path: str) -> str: client = get_redis_client() if not client: return None cache_key = generate_cache_key(complaint_text, image_path) cached = client.get(cache_key) if cached: print("Cache HIT - returning cached response") return json.loads(cached) print("Cache MISS - calling OpenAI") return None def set_cached_response(complaint_text: str, image_path: str, response: str): client = get_redis_client() if not client: return cache_key = generate_cache_key(complaint_text, image_path) client.setex( cache_key, CACHE_EXPIRY, json.dumps(response) ) print(f"Response cached for {CACHE_EXPIRY} seconds")