| import json | |
| import time | |
| import logging | |
| from core.redis_client import redis_client | |
| from utils.config import config | |
| # Set up logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| def save_user_state(user_id: str, state: dict): | |
| """Save user state to Redis with fallback to in-memory storage""" | |
| client = redis_client.get_client() | |
| if not client: | |
| # Fallback: use in-memory storage (will not persist across restarts) | |
| logger.info("Redis not available, using in-memory storage for user state") | |
| return False | |
| try: | |
| client.hset(f"user:{user_id}", mapping=state) | |
| return True | |
| except Exception as e: | |
| logger.error(f"Error saving user state: {e}") | |
| return False | |
| def load_user_state(user_id: str): | |
| """Load user state from Redis with fallback""" | |
| client = redis_client.get_client() | |
| if not client: | |
| logger.info("Redis not available, returning empty state") | |
| return {} | |
| try: | |
| return client.hgetall(f"user:{user_id}") | |
| except Exception as e: | |
| logger.error(f"Error loading user state: {e}") | |
| return {} | |
| def check_redis_health(): | |
| """Check if Redis is healthy""" | |
| return redis_client.is_healthy() | |