Spaces:
Sleeping
Sleeping
| import redis | |
| from dotenv import load_dotenv | |
| import os | |
| import pickle | |
| import logging | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='%(asctime)s - %(levelname)s - %(message)s', | |
| handlers=[logging.FileHandler('logs/cache.log', encoding='utf-8'), logging.StreamHandler()] | |
| ) | |
| logger = logging.getLogger(__name__) | |
| load_dotenv() | |
| class RedisCache: | |
| def __init__(self): | |
| try: | |
| self.client = redis.Redis( | |
| host=os.getenv('REDIS_HOST', 'localhost'), | |
| port=int(os.getenv('REDIS_PORT', 6379)), | |
| db=0, | |
| decode_responses=False | |
| ) | |
| self.client.ping() | |
| logger.info("Connected to Redis") | |
| except Exception as e: | |
| logger.error(f"Failed to connect to Redis: {e}") | |
| raise | |
| def get(self, key): | |
| try: | |
| value = self.client.get(key) | |
| if value: | |
| return pickle.loads(value) | |
| return None | |
| except Exception as e: | |
| logger.error(f"Error retrieving from cache: {e}") | |
| return None | |
| def set(self, key, value, ttl=7200): | |
| try: | |
| self.client.setex(key, ttl, pickle.dumps(value)) | |
| except Exception as e: | |
| logger.error(f"Error setting cache: {e}") |