banking-rag-ui / app /cache /redis_cache.py
ranjithkumar111's picture
Upload 54 files
0ab392d verified
Raw
History Blame Contribute Delete
1.54 kB
# File : app/cache/redis_cache.py
# Purpose : Redis caching for RAG query responses
import json
import hashlib
import redis.asyncio as aioredis
from typing import Optional
from app.config import get_settings
settings = get_settings()
_redis_client: Optional[aioredis.Redis] = None
async def get_redis() -> aioredis.Redis:
global _redis_client
if _redis_client is None:
_redis_client = aioredis.from_url(
settings.redis_url,
encoding="utf-8",
decode_responses=True,
)
return _redis_client
def make_cache_key(user_id: str, query: str) -> str:
raw = f"{user_id}:{query.strip().lower()}"
return "rag:" + hashlib.md5(raw.encode()).hexdigest()
async def get_cached_response(user_id: str, query: str) -> Optional[dict]:
try:
redis = await get_redis()
key = make_cache_key(user_id, query)
cached = await redis.get(key)
if cached:
print(f"[CACHE] Hit for key: {key}")
return json.loads(cached)
except Exception as e:
print(f"[CACHE] Redis get error: {e}")
return None
async def set_cached_response(user_id: str, query: str, response: dict) -> None:
try:
redis = await get_redis()
key = make_cache_key(user_id, query)
await redis.setex(key, settings.redis_ttl_seconds, json.dumps(response))
print(f"[CACHE] Stored key: {key}")
except Exception as e:
print(f"[CACHE] Redis set error: {e}")